Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3385497

Browse files
committed
New smgrtruncate smgr' interface func.
1 parenta2a33e1 commit3385497

File tree

1 file changed

+29
-3
lines changed
  • src/backend/storage/smgr

1 file changed

+29
-3
lines changed

‎src/backend/storage/smgr/smgr.c

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
*
1212
* IDENTIFICATION
13-
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.4 1996/11/08 05:59:15 momjian Exp $
13+
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.5 1996/11/27 07:25:52 vadim Exp $
1414
*
1515
*-------------------------------------------------------------------------
1616
*/
@@ -36,6 +36,7 @@ typedef struct f_smgr {
3636
int(*smgr_flush)();
3737
int(*smgr_blindwrt)();
3838
int(*smgr_nblocks)();
39+
int(*smgr_truncate)();
3940
int(*smgr_commit)();/* may be NULL */
4041
int(*smgr_abort)();/* may be NULL */
4142
}f_smgr;
@@ -49,12 +50,14 @@ static f_smgr smgrsw[] = {
4950

5051
/* magnetic disk */
5152
{mdinit,NULL,mdcreate,mdunlink,mdextend,mdopen,mdclose,
52-
mdread,mdwrite,mdflush,mdblindwrt,mdnblocks,mdcommit,mdabort },
53+
mdread,mdwrite,mdflush,mdblindwrt,mdnblocks,mdtruncate,
54+
mdcommit,mdabort },
5355

5456
#ifdefMAIN_MEMORY
5557
/* main memory */
5658
{mminit,mmshutdown,mmcreate,mmunlink,mmextend,mmopen,mmclose,
57-
mmread,mmwrite,mmflush,mmblindwrt,mmnblocks,mmcommit,mmabort },
59+
mmread,mmwrite,mmflush,mmblindwrt,mmnblocks,NULL,
60+
mmcommit,mmabort },
5861

5962
#endif/* MAIN_MEMORY */
6063
};
@@ -321,6 +324,29 @@ smgrnblocks(int16 which, Relation reln)
321324
return (nblocks);
322325
}
323326

327+
/*
328+
* smgrtruncate() -- Truncate supplied relation to a specified number
329+
*of blocks
330+
*
331+
*Returns the number of blocks on success, aborts the current
332+
*transaction on failure.
333+
*/
334+
int
335+
smgrtruncate(int16which,Relationreln,intnblocks)
336+
{
337+
intnewblks;
338+
339+
newblks=nblocks;
340+
if (smgrsw[which].smgr_truncate)
341+
{
342+
if ((newblks= (*(smgrsw[which].smgr_truncate))(reln,nblocks))<0)
343+
elog(WARN,"cannot truncate %.*s to %d blocks",
344+
NAMEDATALEN,&(reln->rd_rel->relname.data[0]),nblocks);
345+
}
346+
347+
return (newblks);
348+
}
349+
324350
/*
325351
* smgrcommit(), smgrabort() -- Commit or abort changes made during the
326352
* current transaction.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp