]> granicus.if.org Git - postgresql/commit
Support user mappings in get_object_address
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 11 Mar 2015 20:01:13 +0000 (17:01 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 11 Mar 2015 20:04:27 +0000 (17:04 -0300)
commit890192e99af5db1d15d5bb73f3f1044faa1d2758
treefdb3529d0e3df5ad4ace15df1f594ca4598c8758
parent1ce7a57ca6e8c5212fa2ab3bf31d56c74d5b5b8f
Support user mappings in get_object_address

Since commit 72dd233d3ef we were trying to obtain object addressing
information in sql_drop event triggers, but that caused failures when
the drops involved user mappings.  This addition enables that to work
again.  Naturally, pg_get_object_address can work with these objects
now, too.

I toyed with the idea of removing DropUserMappingStmt as a node and
using DropStmt instead in the DropUserMappingStmt grammar production,
but that didn't go very well: for one thing the messages thrown by the
specific code are specialized (you get "server not found" if you specify
the wrong server, instead of a generic "user mapping for ... not found"
which you'd get it we were to merge this with RemoveObjects --- unless
we added even more special cases).  For another thing, it would require
to pass RoleSpec nodes through the objname/objargs representation used
by RemoveObjects, which works in isolation, but gets messy when
pg_get_object_address is involved.  So I dropped this part for now.

Reviewed by Stephen Frost.
src/backend/catalog/objectaddress.c
src/backend/commands/event_trigger.c
src/include/nodes/parsenodes.h
src/test/regress/expected/event_trigger.out
src/test/regress/expected/object_address.out
src/test/regress/sql/event_trigger.sql
src/test/regress/sql/object_address.sql