Dept. of second thoughts: add comments cautioning against using
ReadOrZeroBuffer to fetch pages from beyond physical EOF. This would usually work, but would cause problems for md.c if writes occurred beyond a segment boundary when the previous segment file hadn't been fully extended.
This commit is contained in:
parent
8c3cc86e7b
commit
63735ca815
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.217 2007/05/02 23:18:03 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.218 2007/05/02 23:34:48 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -21,7 +21,9 @@
|
|||||||
* cache we don't read it, but just return a zeroed-out buffer. Useful
|
* cache we don't read it, but just return a zeroed-out buffer. Useful
|
||||||
* when the caller intends to fill the page from scratch, since this
|
* when the caller intends to fill the page from scratch, since this
|
||||||
* saves I/O and avoids unnecessary failure if the page-on-disk has
|
* saves I/O and avoids unnecessary failure if the page-on-disk has
|
||||||
* corrupt page headers.
|
* corrupt page headers. Caution: do not use this to read a page that
|
||||||
|
* is beyond the relation's current physical EOF; that is likely to
|
||||||
|
* cause problems in md.c when the page is modified and written out.
|
||||||
*
|
*
|
||||||
* ReleaseBuffer() -- unpin a buffer
|
* ReleaseBuffer() -- unpin a buffer
|
||||||
*
|
*
|
||||||
@ -137,6 +139,9 @@ ReadBuffer(Relation reln, BlockNumber blockNum)
|
|||||||
* cache already, it's filled with zeros instead of reading it from
|
* cache already, it's filled with zeros instead of reading it from
|
||||||
* disk. The caller is expected to overwrite the whole buffer,
|
* disk. The caller is expected to overwrite the whole buffer,
|
||||||
* so that the current page contents are not interesting.
|
* so that the current page contents are not interesting.
|
||||||
|
* Caution: do not use this to read a page that is beyond the relation's
|
||||||
|
* current physical EOF; that is likely to cause problems in md.c when
|
||||||
|
* the page is modified and written out. P_NEW is OK, though.
|
||||||
*/
|
*/
|
||||||
Buffer
|
Buffer
|
||||||
ReadOrZeroBuffer(Relation reln, BlockNumber blockNum)
|
ReadOrZeroBuffer(Relation reln, BlockNumber blockNum)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user