• Tom Lane's avatar
    Fix psql \d's query for identifying parent triggers. · 3886785b
    Tom Lane authored
    The original coding (from c33869cc) failed with "more than one row
    returned by a subquery used as an expression" if there were unrelated
    triggers of the same tgname on parent partitioned tables.  (That's
    possible because statement-level triggers don't get inherited.)  Fix
    by applying LIMIT 1 after sorting the candidates by inheritance level.
    
    Also, wrap the subquery in a CASE so that we don't have to execute it at
    all when the trigger is visibly non-inherited.  Aside from saving some
    cycles, this avoids the need for a confusing and undocumented NULLIF().
    
    While here, tweak the format of the emitted query to look a bit
    nicer for "psql -E", and add some explanation of this subquery,
    because it badly needs it.
    
    Report and patch by Justin Pryzby (with some editing by me).
    Back-patch to v13 where the faulty code came in.
    
    Discussion: https://postgr.es/m/20211217154356.GJ17618@telsasoft.com
    3886785b
triggers.sql 88.4 KB