diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-09-02 19:02:20 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-09-02 19:02:20 +0000 |
commit | 35e9b1cc1ee296959d52383455052cb3743af478 (patch) | |
tree | 760d8047d591cd1e96316b3a9c12764a12dc6ae3 /src/backend/access | |
parent | 962a4bb69f1dd70f1212e27ba2de7634cf91a80d (diff) | |
download | postgresql-35e9b1cc1ee296959d52383455052cb3743af478.tar.gz postgresql-35e9b1cc1ee296959d52383455052cb3743af478.zip |
Clean up a couple of ad-hoc computations of the maximum number of tuples
on a page, as suggested by ITAGAKI Takahiro. Also, change a few places
that were using some other estimates of max-items-per-page to consistently
use MaxOffsetNumber. This is conservatively large --- we could have used
the new MaxHeapTuplesPerPage macro, or a similar one for index tuples ---
but those places are simply declaring a fixed-size buffer and assuming it
will work, rather than actively testing for overrun. It seems safer to
size these buffers in a way that can't overflow even if the page is
corrupt.
Diffstat (limited to 'src/backend/access')
-rw-r--r-- | src/backend/access/gist/gistvacuum.c | 6 | ||||
-rw-r--r-- | src/backend/access/nbtree/nbtree.c | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c index 381cf985590..bcd5ec559c5 100644 --- a/src/backend/access/gist/gistvacuum.c +++ b/src/backend/access/gist/gistvacuum.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.6 2005/06/30 17:52:14 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.7 2005/09/02 19:02:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -52,7 +52,7 @@ gistVacuumUpdate( GistVacuum *gv, BlockNumber blkno, bool needunion ) { int lenaddon=4, curlenaddon=0, ntodelete=0; IndexTuple idxtuple, *addon=NULL; bool needwrite=false; - OffsetNumber todelete[ BLCKSZ/SizeOfIptrData ]; + OffsetNumber todelete[MaxOffsetNumber]; ItemPointerData *completed=NULL; int ncompleted=0, lencompleted=16; @@ -439,7 +439,7 @@ gistbulkdelete(PG_FUNCTION_ARGS) { page = (Page) BufferGetPage(buffer); if ( GistPageIsLeaf(page) ) { - OffsetNumber todelete[BLCKSZ/SizeOfIptrData]; + OffsetNumber todelete[MaxOffsetNumber]; int ntodelete = 0; LockBuffer(buffer, GIST_UNLOCK); diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 84ce90c5ca2..d4232c847f8 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -12,7 +12,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.130 2005/05/11 06:24:53 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.131 2005/09/02 19:02:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -584,7 +584,7 @@ btbulkdelete(PG_FUNCTION_ARGS) IndexBulkDeleteResult *result; double tuples_removed; double num_index_tuples; - OffsetNumber deletable[BLCKSZ / sizeof(OffsetNumber)]; + OffsetNumber deletable[MaxOffsetNumber]; int ndeletable; Buffer buf; BlockNumber num_pages; |