]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix bug in the WAL recovery code to finish an incomplete split.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 11 Jun 2008 08:42:35 +0000 (08:42 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 11 Jun 2008 08:42:35 +0000 (08:42 +0000)
CacheInvalidateRelcache() crashes if called in WAL recovery, because the
invalidation infrastructure hasn't been initialized yet.

Back-patch to 8.2, where the bug was introduced.

src/backend/access/nbtree/nbtinsert.c

index cc85592b1836c9564b24b1662b039bcb8cbc4989..f339a9cfcd1a72a3f5bf564603cbb8b19acbac6c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.146.2.2 2007/12/31 04:52:20 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.146.2.3 2008/06/11 08:42:35 heikki Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -690,7 +690,8 @@ _bt_insertonpg(Relation rel,
                /* release buffers; send out relcache inval if metapage changed */
                if (BufferIsValid(metabuf))
                {
-                       CacheInvalidateRelcache(rel);
+                       if (!InRecovery)
+                               CacheInvalidateRelcache(rel);
                        _bt_relbuf(rel, metabuf);
                }
 
@@ -1623,7 +1624,8 @@ _bt_newroot(Relation rel, Buffer lbuf, Buffer rbuf)
        END_CRIT_SECTION();
 
        /* send out relcache inval for metapage change */
-       CacheInvalidateRelcache(rel);
+       if (!InRecovery)
+               CacheInvalidateRelcache(rel);
 
        /* done with metapage */
        _bt_relbuf(rel, metabuf);