diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-01-15 22:14:17 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-01-15 22:14:17 +0000 |
commit | aa00e6134e4fa892a2ec5f343d2c60a599dd29d9 (patch) | |
tree | 2d3543984d207f6ea6b3b58a94b03d47fd6bf651 /src/backend/access | |
parent | 685a66cdfe07fd25e82b01d15894005086707633 (diff) | |
download | postgresql-aa00e6134e4fa892a2ec5f343d2c60a599dd29d9.tar.gz postgresql-aa00e6134e4fa892a2ec5f343d2c60a599dd29d9.zip |
Add more sanity-checking to PageAddItem and PageIndexTupleDelete,
to prevent spreading of corruption when page header pointers are bad.
Merge PageZero into PageInit, since it was never used separately, and
remove separate memset calls used at most other PageInit call points.
Remove IndexPageCleanup, which wasn't used at all.
Diffstat (limited to 'src/backend/access')
-rw-r--r-- | src/backend/access/gist/gist.c | 4 | ||||
-rw-r--r-- | src/backend/access/hash/hashpage.c | 14 | ||||
-rw-r--r-- | src/backend/access/heap/heapam.c | 8 | ||||
-rw-r--r-- | src/backend/access/nbtree/nbtpage.c | 10 | ||||
-rw-r--r-- | src/backend/access/rtree/rtree.c | 4 |
5 files changed, 8 insertions, 32 deletions
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c index 38fe008e8ea..db57a5f3ffa 100644 --- a/src/backend/access/gist/gist.c +++ b/src/backend/access/gist/gist.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.86 2001/11/05 17:46:23 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.87 2002/01/15 22:14:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1437,7 +1437,7 @@ GISTInitBuffer(Buffer b, uint32 f) pageSize = BufferGetPageSize(b); page = BufferGetPage(b); - MemSet(page, 0, (int) pageSize); + PageInit(page, pageSize, sizeof(GISTPageOpaqueData)); opaque = (GISTPageOpaque) PageGetSpecialPointer(page); diff --git a/src/backend/access/hash/hashpage.c b/src/backend/access/hash/hashpage.c index 0fff5a11e6f..668f0b16d09 100644 --- a/src/backend/access/hash/hashpage.c +++ b/src/backend/access/hash/hashpage.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/hash/hashpage.c,v 1.33 2001/10/25 05:49:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/hash/hashpage.c,v 1.34 2002/01/15 22:14:16 tgl Exp $ * * NOTES * Postgres hash pages look like ordinary relation pages. The opaque @@ -301,17 +301,7 @@ _hash_chgbufaccess(Relation rel, void _hash_pageinit(Page page, Size size) { - Assert(((PageHeader) page)->pd_lower == 0); - Assert(((PageHeader) page)->pd_upper == 0); - Assert(((PageHeader) page)->pd_special == 0); - - /* - * Cargo-cult programming -- don't really need this to be zero, but - * creating new pages is an infrequent occurrence and it makes me feel - * good when I know they're empty. - */ - MemSet(page, 0, size); - + Assert(PageIsNew(page)); PageInit(page, size, sizeof(HashPageOpaqueData)); } diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 5073a2e1900..878896d5e27 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.128 2001/11/05 17:46:23 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.129 2002/01/15 22:14:17 tgl Exp $ * * * INTERFACE ROUTINES @@ -2094,10 +2094,7 @@ heap_xlog_insert(bool redo, XLogRecPtr lsn, XLogRecord *record) uint32 newlen; if (record->xl_info & XLOG_HEAP_INIT_PAGE) - { PageInit(page, BufferGetPageSize(buffer), 0); - PageZero(page); - } if (XLByteLE(lsn, PageGetLSN(page))) /* changes are applied */ { @@ -2262,10 +2259,7 @@ newsame:; uint32 newlen; if (record->xl_info & XLOG_HEAP_INIT_PAGE) - { PageInit(page, BufferGetPageSize(buffer), 0); - PageZero(page); - } if (XLByteLE(lsn, PageGetLSN(page))) /* changes are applied */ { diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c index 2e6eb20cd4c..17006ed06ce 100644 --- a/src/backend/access/nbtree/nbtpage.c +++ b/src/backend/access/nbtree/nbtpage.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.54 2001/10/25 05:49:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.55 2002/01/15 22:14:17 tgl Exp $ * * NOTES * Postgres btree pages look like ordinary relation pages. The opaque @@ -399,14 +399,6 @@ _bt_wrtnorelbuf(Relation rel, Buffer buf) void _bt_pageinit(Page page, Size size) { - /* - * Cargo_cult programming -- don't really need this to be zero, but - * creating new pages is an infrequent occurrence and it makes me feel - * good when I know they're empty. - */ - - MemSet(page, 0, size); - PageInit(page, size, sizeof(BTPageOpaqueData)); ((BTPageOpaque) PageGetSpecialPointer(page))->btpo_parent = InvalidBlockNumber; diff --git a/src/backend/access/rtree/rtree.c b/src/backend/access/rtree/rtree.c index 1e74678831f..2526ea4b812 100644 --- a/src/backend/access/rtree/rtree.c +++ b/src/backend/access/rtree/rtree.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.68 2001/11/05 17:46:24 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.69 2002/01/15 22:14:17 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1107,7 +1107,7 @@ RTInitBuffer(Buffer b, uint32 f) pageSize = BufferGetPageSize(b); page = BufferGetPage(b); - MemSet(page, 0, (int) pageSize); + PageInit(page, pageSize, sizeof(RTreePageOpaqueData)); opaque = (RTreePageOpaque) PageGetSpecialPointer(page); |