• Tom Lane's avatar
    Fix intermittent crash in DROP INDEX CONCURRENTLY. · e31d5248
    Tom Lane authored
    When deleteOneObject closes and reopens the pg_depend relation,
    we must see to it that the relcache pointer held by the calling function
    (typically performMultipleDeletions) is updated.  Usually the relcache
    entry is retained so that the pointer value doesn't change, which is why
    the problem had escaped notice ... but after a cache flush event there's
    no guarantee that the same memory will be reassigned.  To fix, change
    the recursive functions' APIs so that we pass around a "Relation *"
    not just "Relation".
    
    Per investigation of occasional buildfarm failures.  This is trivial
    to reproduce with -DCLOBBER_CACHE_ALWAYS, which points up the sad
    lack of any buildfarm member running that way on a regular basis.
    e31d5248
dependency.c 86.8 KB