• Tom Lane's avatar
    Improve error reporting for DROP FUNCTION/PROCEDURE/AGGREGATE/ROUTINE. · bfb456c1
    Tom Lane authored
    These commands allow the argument type list to be omitted if there is
    just one object that matches by name.  However, if that syntax was
    used with DROP IF EXISTS and there was more than one match, you got
    a "function ... does not exist, skipping" notice message rather than a
    truthful complaint about the ambiguity.  This was basically due to
    poor factorization and a rats-nest of logic, so refactor the relevant
    lookup code to make it cleaner.
    
    Note that this amounts to narrowing the scope of which sorts of
    error conditions IF EXISTS will bypass.  Per discussion, we only
    intend it to skip no-such-object cases, not multiple-possible-matches
    cases.
    
    Per bug #15572 from Ash Marath.  Although this definitely seems like
    a bug, it's not clear that people would thank us for changing the
    behavior in minor releases, so no back-patch.
    
    David Rowley, reviewed by Julien Rouhaud and Pavel Stehule
    
    Discussion: https://postgr.es/m/15572-ed1b9ed09503de8a@postgresql.org
    bfb456c1
parse_func.c 79.1 KB