Support user mappings in get_object_address
Alvaro Herrera <alvherre@alvh.no-ip.org>
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.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/objectaddress.c | modified | +77 −1 |
| src/backend/commands/event_trigger.c | modified | +1 −0 |
| src/include/nodes/parsenodes.h | modified | +1 −0 |
| src/test/regress/expected/event_trigger.out | modified | +8 −1 |
| src/test/regress/expected/object_address.out | modified | +13 −6 |
| src/test/regress/sql/event_trigger.sql | modified | +4 −1 |
| src/test/regress/sql/object_address.sql | modified | +5 −4 |