postgres.git / summary / log / commit / refs

commit    17209608aeb547f470d82f32c658e1e4c92c06e5
Author:   Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date:     Wed Jun 11 08:42:35 2008 +0000
First released in: 8.4.0, 8.2.10, 8.3.4

    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.


src/backend/access/nbtree/nbtinsert.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index cc85592b183..f339a9cfcd1 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.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); [parent: a7aaa494e3aa]