|
8 | 8 | * |
9 | 9 | * |
10 | 10 | * 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 $ |
12 | 12 | * |
13 | 13 | *------------------------------------------------------------------------- |
14 | 14 | */ |
@@ -352,28 +352,31 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, BlockNumber blockNum, |
352 | 352 | if (zeroPage) |
353 | 353 | MemSet((char*)bufBlock,0,BLCKSZ); |
354 | 354 | else |
355 | | -smgrread(smgr,blockNum, (char*)bufBlock); |
356 | | -/* check for garbage data */ |
357 | | -if (!PageHeaderIsValid((PageHeader)bufBlock)) |
358 | 355 | { |
359 | | -if (zero_damaged_pages) |
| 356 | +smgrread(smgr,blockNum, (char*)bufBlock); |
| 357 | + |
| 358 | +/* check for garbage data */ |
| 359 | +if (!PageHeaderIsValid((PageHeader)bufBlock)) |
360 | 360 | { |
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))); |
369 | 379 | } |
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))); |
377 | 380 | } |
378 | 381 | } |
379 | 382 |
|
|