diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2008-06-11 08:38:56 +0000 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2008-06-11 08:38:56 +0000 |
commit | 96675bff1f49d2d846750e344d3adc409e6bad73 (patch) | |
tree | b6e0c6a43ba376415a9179dc01123d16999f984c /src | |
parent | 109940c635ff831b3d6d0cb0a7e1b6d4d838becf (diff) | |
download | postgresql-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.c | 8 |
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); |