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.
/* release buffers; send out relcache inval if metapage changed */
if (BufferIsValid(metabuf))
{
- CacheInvalidateRelcache(rel);
+ if (!InRecovery)
+ CacheInvalidateRelcache(rel);
_bt_relbuf(rel, metabuf);
}
END_CRIT_SECTION();
/* send out relcache inval for metapage change */
- CacheInvalidateRelcache(rel);
+ if (!InRecovery)
+ CacheInvalidateRelcache(rel);
/* done with metapage */
_bt_relbuf(rel, metabuf);