From 4523e0b63ae31c208eb91994484169dc8da86a85 Mon Sep 17 00:00:00 2001
From: Teodor Sigaev <teodor@sigaev.ru>
Date: Wed, 29 Jun 2005 14:06:14 +0000
Subject: [PATCH] Cleanup, remove unneeded pallocs

---
 src/backend/access/gist/gist.c       |  3 ++-
 src/backend/access/gist/gistvacuum.c | 19 +++++++------------
 2 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index 6643ae6131d..2e752252537 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
- *	  $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;
diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c
index 940c2ca0d5e..cf6d89d27b1 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.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);
-- 
GitLab