Make DROP IF EXISTS more consistently not fail
Some cases were still reporting errors and aborting, instead of a NOTICE
that the object was being skipped. This makes it more difficult to
cleanly handle pg_dump --clean, so change that to instead skip missing
objects properly.
Per bug #7873 reported by Dave Rolsky; apparently this affects a large
number of users.
Authors: Pavel Stehule and Dean Rasheed. Some tweaks by Álvaro Herrera
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/b152c6cd0de1827ba58756e24e18110cf902182a
Modified Files
--------------
src/backend/catalog/namespace.c | 45 +++--
src/backend/catalog/objectaddress.c | 46 +++--
src/backend/commands/dropcmds.c | 258 +++++++++++++++++++++-----
src/backend/commands/functioncmds.c | 4 +-
src/backend/commands/opclasscmds.c | 26 ++-
src/backend/commands/tablecmds.c | 26 ++-
src/backend/commands/typecmds.c | 2 +-
src/backend/parser/parse_func.c | 32 +---
src/backend/parser/parse_oper.c | 4 +-
src/backend/parser/parse_type.c | 88 +++++++--
src/backend/utils/adt/regproc.c | 6 +-
src/include/catalog/namespace.h | 3 +-
src/include/parser/parse_type.h | 4 +-
src/pl/plpgsql/src/pl_comp.c | 2 +-
src/test/regress/expected/drop_if_exists.out | 79 +++++++-
src/test/regress/expected/event_trigger.out | 2 +-
src/test/regress/sql/drop_if_exists.sql | 41 ++++
17 files changed, 523 insertions(+), 145 deletions(-)