aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistxlog.c
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2006-05-19 16:15:17 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2006-05-19 16:15:17 +0000
commit420cbff8813dd5b1390a1602331b57fbc4fbb899 (patch)
treef1f5ffbb7a043324d9e9a6d44c31e15dd48c1731 /src/backend/access/gist/gistxlog.c
parent49b3462abb2cd5ff0866e28a4c3de49bfb423902 (diff)
downloadpostgresql-420cbff8813dd5b1390a1602331b57fbc4fbb899.tar.gz
postgresql-420cbff8813dd5b1390a1602331b57fbc4fbb899.zip
Simplify gistSplit() and some refactoring related code.
Diffstat (limited to 'src/backend/access/gist/gistxlog.c')
-rw-r--r--src/backend/access/gist/gistxlog.c22
1 files changed, 5 insertions, 17 deletions
diff --git a/src/backend/access/gist/gistxlog.c b/src/backend/access/gist/gistxlog.c
index 1126727cd97..aef2056a34d 100644
--- a/src/backend/access/gist/gistxlog.c
+++ b/src/backend/access/gist/gistxlog.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.18 2006/05/19 11:10:25 teodor Exp $
+ * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.19 2006/05/19 16:15:17 teodor Exp $
*-------------------------------------------------------------------------
*/
#include "postgres.h"
@@ -557,28 +557,16 @@ gistMakePageLayout(Buffer *buffers, int nbuffers) {
while( nbuffers-- > 0 ) {
Page page = BufferGetPage( buffers[ nbuffers ] );
- IndexTuple idxtup;
- OffsetNumber i;
- char *ptr;
+ IndexTuple* vec;
+ int veclen;
resptr = (SplitedPageLayout*)palloc0( sizeof(SplitedPageLayout) );
resptr->block.blkno = BufferGetBlockNumber( buffers[ nbuffers ] );
resptr->block.num = PageGetMaxOffsetNumber( page );
- for(i=FirstOffsetNumber; i<= PageGetMaxOffsetNumber( page ); i++) {
- idxtup = (IndexTuple) PageGetItem(page, PageGetItemId(page, i));
- resptr->lenlist += IndexTupleSize(idxtup);
- }
-
- resptr->list = (IndexTupleData*)palloc( resptr->lenlist );
- ptr = (char*)(resptr->list);
-
- for(i=FirstOffsetNumber; i<= PageGetMaxOffsetNumber( page ); i++) {
- idxtup = (IndexTuple) PageGetItem(page, PageGetItemId(page, i));
- memcpy( ptr, idxtup, IndexTupleSize(idxtup) );
- ptr += IndexTupleSize(idxtup);
- }
+ vec = gistextractpage( page, &veclen );
+ resptr->list = gistfillitupvec( vec, veclen, &(resptr->lenlist) );
resptr->next = res;
res = resptr;