|
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 |
|
|