• Tom Lane's avatar
    Avoid dangling pointer to relation name in RLS code path in DoCopy(). · a8df75b0
    Tom Lane authored
    With RLS active, "COPY tab TO ..." failed under -DRELCACHE_FORCE_RELEASE,
    and would sometimes fail without that, because it used the relation name
    directly from the relcache as part of the parsetree it's building.  That
    becomes a potentially-dangling pointer as soon as the relcache entry is
    closed, a bit further down.  Typical symptom if the relcache entry chanced
    to get cleared would be "relation does not exist" error with a garbage
    relation name, or possibly a core dump; but if you were really truly
    unlucky, the COPY might copy from the wrong table.
    
    Per report from Andrew Dunstan that regression tests fail with
    -DRELCACHE_FORCE_RELEASE.  The core tests now pass for me (but have
    not tried "make check-world" yet).
    
    Discussion: https://postgr.es/m/7b52f900-0579-cda9-ae2e-de5da17090e6@2ndQuadrant.com
    a8df75b0
copy.c 134 KB