Skip to content
Snippets Groups Projects
Commit 33854972 authored by Vadim B. Mikheev's avatar Vadim B. Mikheev
Browse files

New smgrtruncate smgr' interface func.

parent a2a33e13
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.4 1996/11/08 05:59:15 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.5 1996/11/27 07:25:52 vadim Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -36,6 +36,7 @@ typedef struct f_smgr {
int (*smgr_flush)();
int (*smgr_blindwrt)();
int (*smgr_nblocks)();
int (*smgr_truncate)();
int (*smgr_commit)(); /* may be NULL */
int (*smgr_abort)(); /* may be NULL */
} f_smgr;
......@@ -49,12 +50,14 @@ static f_smgr smgrsw[] = {
/* magnetic disk */
{ mdinit, NULL, mdcreate, mdunlink, mdextend, mdopen, mdclose,
mdread, mdwrite, mdflush, mdblindwrt, mdnblocks, mdcommit, mdabort },
mdread, mdwrite, mdflush, mdblindwrt, mdnblocks, mdtruncate,
mdcommit, mdabort },
#ifdef MAIN_MEMORY
/* main memory */
{ mminit, mmshutdown, mmcreate, mmunlink, mmextend, mmopen, mmclose,
mmread, mmwrite, mmflush, mmblindwrt, mmnblocks, mmcommit, mmabort },
mmread, mmwrite, mmflush, mmblindwrt, mmnblocks, NULL,
mmcommit, mmabort },
#endif /* MAIN_MEMORY */
};
......@@ -321,6 +324,29 @@ smgrnblocks(int16 which, Relation reln)
return (nblocks);
}
/*
* smgrtruncate() -- Truncate supplied relation to a specified number
* of blocks
*
* Returns the number of blocks on success, aborts the current
* transaction on failure.
*/
int
smgrtruncate(int16 which, Relation reln, int nblocks)
{
int newblks;
newblks = nblocks;
if (smgrsw[which].smgr_truncate)
{
if ((newblks = (*(smgrsw[which].smgr_truncate))(reln, nblocks)) < 0)
elog(WARN, "cannot truncate %.*s to %d blocks",
NAMEDATALEN, &(reln->rd_rel->relname.data[0]), nblocks);
}
return (newblks);
}
/*
* smgrcommit(), smgrabort() -- Commit or abort changes made during the
* current transaction.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment