]> granicus.if.org Git - postgresql/commitdiff
Fix bug in GIN WAL redo cleanup function: don't free fake relcache entry
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 9 Feb 2010 20:31:35 +0000 (20:31 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 9 Feb 2010 20:31:35 +0000 (20:31 +0000)
while it's still being used.

Backpatch to 8.4, where the fake relcache method was introduced.

src/backend/access/gin/ginxlog.c

index 1f008b727f04f7a84d0b44b76cdbaff9a5e959a3..74601ff548d11ab5cb7c9d96bfb3c710add08e61 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *                      $PostgreSQL: pgsql/src/backend/access/gin/ginxlog.c,v 1.19 2009/06/11 14:48:53 momjian Exp $
+ *                      $PostgreSQL: pgsql/src/backend/access/gin/ginxlog.c,v 1.19.2.1 2010/02/09 20:31:35 heikki Exp $
  *-------------------------------------------------------------------------
  */
 #include "postgres.h"
@@ -773,8 +773,6 @@ ginContinueSplit(ginIncompleteSplit *split)
                                                                           GinPageGetOpaque(page)->maxoff))->key;
        }
 
-       FreeFakeRelcacheEntry(reln);
-
        btree.rightblkno = split->rightBlkno;
 
        stack.blkno = split->leftBlkno;
@@ -785,6 +783,8 @@ ginContinueSplit(ginIncompleteSplit *split)
        findParents(&btree, &stack, split->rootBlkno);
        ginInsertValue(&btree, stack.parent);
 
+       FreeFakeRelcacheEntry(reln);
+
        UnlockReleaseBuffer(buffer);
 }