From: Tom Lane Date: Sat, 7 Jan 2006 22:45:53 +0000 (+0000) Subject: Add RelationOpenSmgr() calls to ensure rd_smgr is valid when we try to X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=f19097a9cca23cdb8866d59bb43d51e5c3e6c758;p=users%2Fbernd%2Fpostgres.git Add RelationOpenSmgr() calls to ensure rd_smgr is valid when we try to use it. While it normally has been opened earlier during btree index build, testing shows that it's possible for the link to be closed again if an sinval reset occurs while the index is being built. --- diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c index a717591fff..383b5676ea 100644 --- a/src/backend/access/nbtree/nbtsort.c +++ b/src/backend/access/nbtree/nbtsort.c @@ -271,6 +271,9 @@ _bt_blnewpage(uint32 level) static void _bt_blwritepage(BTWriteState *wstate, Page page, BlockNumber blkno) { + /* Ensure rd_smgr is open (could have been closed by relcache flush!) */ + RelationOpenSmgr(wstate->index); + /* XLOG stuff */ if (wstate->btws_use_wal) { @@ -818,5 +821,8 @@ _bt_load(BTWriteState *wstate, BTSpool *btspool, BTSpool *btspool2) * occurs. */ if (!wstate->index->rd_istemp) + { + RelationOpenSmgr(wstate->index); smgrimmedsync(wstate->index->rd_smgr); + } }