• Tom Lane's avatar
    Fix failure to ignore leftover temp tables after a server crash. · 6919b7e3
    Tom Lane authored
    During crash recovery, we remove disk files belonging to temporary tables,
    but the system catalog entries for such tables are intentionally not
    cleaned up right away.  Instead, the first backend that uses a temp schema
    is expected to clean out any leftover objects therein.  This approach
    requires that we be careful to ignore leftover temp tables (since any
    actual access attempt would fail), *even if their BackendId matches our
    session*, if we have not yet established use of the session's corresponding
    temp schema.  That worked fine in the past, but was broken by commit
    debcec7d which incorrectly removed the
    rd_islocaltemp relcache flag.  Put it back, and undo various changes
    that substituted tests like "rel->rd_backend == MyBackendId" for use
    of a state-aware flag.  Per trouble report from Heikki Linnakangas.
    
    Back-patch to 9.1 where the erroneous change was made.  In the back
    branches, be careful to add rd_islocaltemp in a spot in the struct that
    was alignment padding before, so as not to break existing add-on code.
    6919b7e3
relcache.c 142 KB