diff options
author | Teodor Sigaev <teodor@sigaev.ru> | 2006-05-19 16:15:17 +0000 |
---|---|---|
committer | Teodor Sigaev <teodor@sigaev.ru> | 2006-05-19 16:15:17 +0000 |
commit | 420cbff8813dd5b1390a1602331b57fbc4fbb899 (patch) | |
tree | f1f5ffbb7a043324d9e9a6d44c31e15dd48c1731 /src/backend/access/gist/gistxlog.c | |
parent | 49b3462abb2cd5ff0866e28a4c3de49bfb423902 (diff) | |
download | postgresql-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.c | 22 |
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; |