• Alvaro Herrera's avatar
    Add sql_drop event for event triggers · 473ab40c
    Alvaro Herrera authored
    This event takes place just before ddl_command_end, and is fired if and
    only if at least one object has been dropped by the command.  (For
    instance, DROP TABLE IF EXISTS of a table that does not in fact exist
    will not lead to such a trigger firing).  Commands that drop multiple
    objects (such as DROP SCHEMA or DROP OWNED BY) will cause a single event
    to fire.  Some firings might be surprising, such as
    ALTER TABLE DROP COLUMN.
    
    The trigger is fired after the drop has taken place, because that has
    been deemed the safest design, to avoid exposing possibly-inconsistent
    internal state (system catalogs as well as current transaction) to the
    user function code.  This means that careful tracking of object
    identification is required during the object removal phase.
    
    Like other currently existing events, there is support for tag
    filtering.
    
    To support the new event, add a new pg_event_trigger_dropped_objects()
    set-returning function, which returns a set of rows comprising the
    objects affected by the command.  This is to be used within the user
    function code, and is mostly modelled after the recently introduced
    pg_identify_object() function.
    
    Catalog version bumped due to the new function.
    
    Dimitri Fontaine and Álvaro Herrera
    Review by Robert Haas, Tom Lane
    473ab40c
builtins.h 48.5 KB