• Tom Lane's avatar
    In rebuild_relation(), don't access an already-closed relcache entry. · dbca84f0
    Tom Lane authored
    This reliably fails with -DRELCACHE_FORCE_RELEASE, as reported by
    Andrew Dunstan, and could sometimes fail in normal operation, resulting
    in a wrong persistence value being used for the transient table.
    It's not immediately clear to me what effects that might have beyond
    the risk of a crash while accessing OldHeap->rd_rel->relpersistence,
    but it's probably not good.
    
    Bug introduced by commit f41872d0, and made substantially worse by
    commit 85b506bb, which added a second such access significantly
    later than the heap_close.  I doubt the first reference could fail
    in a production scenario, but the second one definitely could.
    
    Discussion: https://postgr.es/m/7b52f900-0579-cda9-ae2e-de5da17090e6@2ndQuadrant.com
    dbca84f0
cluster.c 54.2 KB