• Tom Lane's avatar
    Add checks to TRUNCATE, CLUSTER, and REINDEX to prevent performing these · 0688d840
    Tom Lane authored
    operations when the current transaction has any open references to the
    target relation or index (implying it has an active query using the relation).
    The need for this was previously recognized in connection with ALTER TABLE,
    but anything that summarily eliminates tuples or moves them around would
    confuse an active scan.
    
    While this patch does not in itself fix bug #3883 (the deadlock would happen
    before the new check fires), it will discourage people from attempting the
    sequence of operations that creates a deadlock risk, so it's at least a
    partial response to that problem.
    
    In passing, add a previously-missing check to REINDEX to prevent trying to
    reindex another backend's temp table.  This isn't a security problem since
    only a superuser would get past the schema permission checks, but if we are
    testing for this in other utility commands then surely REINDEX should too.
    0688d840
tablecmds.h 2.12 KB