aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2008-06-11 08:38:56 +0000
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2008-06-11 08:38:56 +0000
commit96675bff1f49d2d846750e344d3adc409e6bad73 (patch)
treeb6e0c6a43ba376415a9179dc01123d16999f984c /src
parent109940c635ff831b3d6d0cb0a7e1b6d4d838becf (diff)
downloadpostgresql-96675bff1f49d2d846750e344d3adc409e6bad73.tar.gz
postgresql-96675bff1f49d2d846750e344d3adc409e6bad73.zip
Fix bug in the WAL recovery code to finish an incomplete split.
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.
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/nbtree/nbtinsert.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index e5e78797bbd..01e1ea49448 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.166 2008/05/12 00:00:45 alvherre Exp $
+ * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.167 2008/06/11 08:38:56 heikki Exp $
*
*-------------------------------------------------------------------------
*/
@@ -747,7 +747,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);
}
@@ -1792,7 +1793,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);