summaryrefslogtreecommitdiff
path: root/src/backend/access
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-01-15 22:14:17 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-01-15 22:14:17 +0000
commitaa00e6134e4fa892a2ec5f343d2c60a599dd29d9 (patch)
tree2d3543984d207f6ea6b3b58a94b03d47fd6bf651 /src/backend/access
parent685a66cdfe07fd25e82b01d15894005086707633 (diff)
downloadpostgresql-aa00e6134e4fa892a2ec5f343d2c60a599dd29d9.tar.gz
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.c4
-rw-r--r--src/backend/access/hash/hashpage.c14
-rw-r--r--src/backend/access/heap/heapam.c8
-rw-r--r--src/backend/access/nbtree/nbtpage.c10
-rw-r--r--src/backend/access/rtree/rtree.c4
5 files changed, 8 insertions, 32 deletions
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index 38fe008e8e..db57a5f3ff 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 0fff5a11e6..668f0b16d0 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 5073a2e190..878896d5e2 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 2e6eb20cd4..17006ed06c 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 1e74678831..2526ea4b81 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);