Fix bug in GIN WAL redo cleanup function: don't free fake relcache entry
authorHeikki Linnakangas <[email protected]>
Tue, 9 Feb 2010 20:31:24 +0000 (20:31 +0000)
committerHeikki Linnakangas <[email protected]>
Tue, 9 Feb 2010 20:31:24 +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 8126be81ee725cdd8e16eb2136291a8992b68fa5..3633bdc0f59e0b932dfa09020318afedb599c5d4 100644 (file)
@@ -777,8 +777,6 @@ ginContinueSplit(ginIncompleteSplit *split)
                                       GinPageGetOpaque(page)->maxoff))->key;
    }
 
-   FreeFakeRelcacheEntry(reln);
-
    btree.rightblkno = split->rightBlkno;
 
    stack.blkno = split->leftBlkno;
@@ -789,6 +787,8 @@ ginContinueSplit(ginIncompleteSplit *split)
    findParents(&btree, &stack, split->rootBlkno);
    ginInsertValue(&btree, stack.parent);
 
+   FreeFakeRelcacheEntry(reln);
+
    UnlockReleaseBuffer(buffer);
 }