• Tom Lane's avatar
    Fix problems seen in parallel regress tests when SI buffer overruns (causing · a152ebee
    Tom Lane authored
    syscache and relcache flushes).  Relcache entry rebuild now preserves
    original tupledesc, rewrite rules, and triggers if possible, so that pointers
    to these things remain valid --- if these things change while relcache entry
    has positive refcount, we elog(ERROR) to avoid later crash.  Arrange for
    xact-local rels to be rebuilt when an SI inval message is seen for them,
    so that they are updated by CommandCounterIncrement the same as regular rels.
    (This is useful because of Hiroshi's recent changes to process our own SI
    messages at CommandCounterIncrement time.)  This allows simplification of
    some routines that previously hacked around the lack of an automatic update.
    catcache now keeps its own copy of tupledesc for its relation, rather than
    depending on the relcache's copy; this avoids needing to reinitialize catcache
    during a cache flush, which saves some cycles and eliminates nasty circularity
    problems that occur if a cache flush happens while trying to initialize a
    catcache.
    Eliminate a number of permanent memory leaks that used to happen during
    catcache or relcache flush; not least of which was that catcache never
    freed any cached tuples!  (Rule parsetree storage is still leaked, however;
    will fix that separately.)
    Nothing done yet about code that uses tuples retrieved by SearchSysCache
    for longer than is safe.
    a152ebee
rel.h 5.46 KB