]> granicus.if.org Git - postgresql/commitdiff
Cleanup, remove unneeded pallocs
authorTeodor Sigaev <teodor@sigaev.ru>
Wed, 29 Jun 2005 14:06:14 +0000 (14:06 +0000)
committerTeodor Sigaev <teodor@sigaev.ru>
Wed, 29 Jun 2005 14:06:14 +0000 (14:06 +0000)
src/backend/access/gist/gist.c
src/backend/access/gist/gistvacuum.c

index 6643ae6131df7b49f6cf7b009e4468ac24b13c39..2e752252537d05b8c119568e0deba1b753749950 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/access/gist/gist.c,v 1.123 2005/06/28 15:51:00 teodor Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/gist/gist.c,v 1.124 2005/06/29 14:06:14 teodor Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -362,6 +362,7 @@ gistplacetopage(GISTInsertState *state, GISTSTATE *giststate) {
                                Page page = (Page)BufferGetPage(ptr->buffer);
                                GistPageGetOpaque(page)->rightlink = ( ptr->next ) ?
                                        ptr->next->block.blkno : InvalidBlockNumber;
+                               GistPageGetOpaque(page)->nsn = PageGetLSN(page);
                                LockBuffer( ptr->buffer, GIST_UNLOCK  );
                                WriteBuffer(ptr->buffer);
                                ptr=ptr->next;
index 940c2ca0d5e25d64a53a27d40b0fd7b302f825ca..cf6d89d27b123c0369f853d1c7fb5181ba911c79 100644 (file)
@@ -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.4 2005/06/28 15:51:00 teodor Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.5 2005/06/29 14:06:14 teodor 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=NULL;
+       OffsetNumber    todelete[ BLCKSZ/SizeOfIptrData ];
        ItemPointerData *completed=NULL;
        int             ncompleted=0, lencompleted=16;
 
@@ -67,7 +67,6 @@ gistVacuumUpdate( GistVacuum *gv, BlockNumber blkno, bool needunion ) {
                        GistClearTuplesDeleted(page);
                }
        } else {
-               todelete = (OffsetNumber*)palloc( MAXALIGN(sizeof(OffsetNumber)*(maxoff+1)) );
                completed = (ItemPointerData*)palloc( sizeof(ItemPointerData)*lencompleted );
                addon=(IndexTuple*)palloc(sizeof(IndexTuple)*lenaddon);
 
@@ -143,16 +142,14 @@ gistVacuumUpdate( GistVacuum *gv, BlockNumber blkno, bool needunion ) {
                                        XLogRecPtr              recptr;
                                        XLogRecData             *rdata;
                                        ItemPointerData         key; /* set key for incomplete insert */
+                                       char                    *xlinfo;
 
                                        ItemPointerSet(&key, blkno, TUPLE_IS_VALID);
        
-                                       oldCtx = MemoryContextSwitchTo(gv->opCtx);
-
                                        rdata = formSplitRdata(gv->index->rd_node, blkno,
                                                &key, dist);
+                                       xlinfo = rdata->data;
 
-                                       MemoryContextSwitchTo(oldCtx);
-                                       
                                        START_CRIT_SECTION();
                        
                                        recptr = XLogInsert(RM_GIST_ID, XLOG_GIST_PAGE_SPLIT, rdata);
@@ -164,6 +161,8 @@ gistVacuumUpdate( GistVacuum *gv, BlockNumber blkno, bool needunion ) {
                                        }
 
                                        END_CRIT_SECTION();
+                                       pfree( xlinfo );
+                                       pfree( rdata );
                                } else {
                                        ptr = dist;
                                        while(ptr) {
@@ -267,7 +266,6 @@ gistVacuumUpdate( GistVacuum *gv, BlockNumber blkno, bool needunion ) {
        for(i=0;i<curlenaddon;i++)
                pfree( addon[i] );
        if (addon) pfree(addon);
-       if (todelete) pfree(todelete); 
        if (completed) pfree(completed); 
        return res;
 }
@@ -442,7 +440,7 @@ gistbulkdelete(PG_FUNCTION_ARGS) {
                page   = (Page) BufferGetPage(buffer);
 
                if ( GistPageIsLeaf(page) ) {
-                       OffsetNumber *todelete = NULL;
+                       OffsetNumber todelete[BLCKSZ/SizeOfIptrData];
                        int ntodelete = 0;
 
                        LockBuffer(buffer, GIST_UNLOCK);
@@ -462,7 +460,6 @@ gistbulkdelete(PG_FUNCTION_ARGS) {
                        pushStackIfSplited(page, stack);
 
                        maxoff = PageGetMaxOffsetNumber(page);
-                       todelete = (OffsetNumber*)palloc( MAXALIGN(sizeof(OffsetNumber)*(maxoff+1)) );
 
                        for(i=FirstOffsetNumber;i<=maxoff;i=OffsetNumberNext(i)) {
                                iid = PageGetItemId(page, i);   
@@ -502,8 +499,6 @@ gistbulkdelete(PG_FUNCTION_ARGS) {
                                        PageSetLSN(page, XLogRecPtrForTemp);
                                WriteNoReleaseBuffer( buffer );
                        }
-
-                       pfree( todelete );
                } else {
                        /* check for split proceeded after look at parent */
                        pushStackIfSplited(page, stack);