Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit d8b04d5

Browse files
committed
In ReadOrZeroBuffer (and related entry points), don't bother to call
PageHeaderIsValid when we zero the buffer instead of reading the page in. The actual performance improvement is probably marginal since this function isn't very heavily used, but a cycle saved is a cycle earned. Zdenek Kotala
1 parent 70d7569 commit d8b04d5

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/backend/storage/buffer/bufmgr.c

+23-20
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.235 2008/08/01 13:16:08 alvherre Exp $
11+
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.236 2008/08/05 15:09:04 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -352,28 +352,31 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, BlockNumber blockNum,
352352
if (zeroPage)
353353
MemSet((char *) bufBlock, 0, BLCKSZ);
354354
else
355-
smgrread(smgr, blockNum, (char *) bufBlock);
356-
/* check for garbage data */
357-
if (!PageHeaderIsValid((PageHeader) bufBlock))
358355
{
359-
if (zero_damaged_pages)
356+
smgrread(smgr, blockNum, (char *) bufBlock);
357+
358+
/* check for garbage data */
359+
if (!PageHeaderIsValid((PageHeader) bufBlock))
360360
{
361-
ereport(WARNING,
362-
(errcode(ERRCODE_DATA_CORRUPTED),
363-
errmsg("invalid page header in block %u of relation %u/%u/%u; zeroing out page",
364-
blockNum,
365-
smgr->smgr_rnode.spcNode,
366-
smgr->smgr_rnode.dbNode,
367-
smgr->smgr_rnode.relNode)));
368-
MemSet((char *) bufBlock, 0, BLCKSZ);
361+
if (zero_damaged_pages)
362+
{
363+
ereport(WARNING,
364+
(errcode(ERRCODE_DATA_CORRUPTED),
365+
errmsg("invalid page header in block %u of relation %u/%u/%u; zeroing out page",
366+
blockNum,
367+
smgr->smgr_rnode.spcNode,
368+
smgr->smgr_rnode.dbNode,
369+
smgr->smgr_rnode.relNode)));
370+
MemSet((char *) bufBlock, 0, BLCKSZ);
371+
}
372+
else
373+
ereport(ERROR,
374+
(errcode(ERRCODE_DATA_CORRUPTED),
375+
errmsg("invalid page header in block %u of relation %u/%u/%u",
376+
blockNum, smgr->smgr_rnode.spcNode,
377+
smgr->smgr_rnode.dbNode,
378+
smgr->smgr_rnode.relNode)));
369379
}
370-
else
371-
ereport(ERROR,
372-
(errcode(ERRCODE_DATA_CORRUPTED),
373-
errmsg("invalid page header in block %u of relation %u/%u/%u",
374-
blockNum, smgr->smgr_rnode.spcNode,
375-
smgr->smgr_rnode.dbNode,
376-
smgr->smgr_rnode.relNode)));
377380
}
378381
}
379382

0 commit comments

Comments
 (0)