mirror of https://github.com/postgres/postgres
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.
This commit is contained in:
parent
e58a944700
commit
afa8f1971a
|
@ -56,7 +56,7 @@
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
static void
|
||||||
_bt_blwritepage(BTWriteState *wstate, Page page, BlockNumber blkno)
|
_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 */
|
/* XLOG stuff */
|
||||||
if (wstate->btws_use_wal)
|
if (wstate->btws_use_wal)
|
||||||
{
|
{
|
||||||
|
@ -818,5 +821,8 @@ _bt_load(BTWriteState *wstate, BTSpool *btspool, BTSpool *btspool2)
|
||||||
* occurs.
|
* occurs.
|
||||||
*/
|
*/
|
||||||
if (!wstate->index->rd_istemp)
|
if (!wstate->index->rd_istemp)
|
||||||
|
{
|
||||||
|
RelationOpenSmgr(wstate->index);
|
||||||
smgrimmedsync(wstate->index->rd_smgr);
|
smgrimmedsync(wstate->index->rd_smgr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue