From afa8f1971ae57b4d5091f77717f666d365545867 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Sat, 7 Jan 2006 22:45:41 +0000 Subject: [PATCH] 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. --- src/backend/access/nbtree/nbtsort.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c index aa1bb0028df..d8a3a248800 100644 --- a/src/backend/access/nbtree/nbtsort.c +++ b/src/backend/access/nbtree/nbtsort.c @@ -56,7 +56,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtsort.c,v 1.96 2005/11/22 18:17:06 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtsort.c,v 1.97 2006/01/07 22:45:41 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -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); + } } -- GitLab