Support opfamily members in get_object_address

Alvaro Herrera <alvherre@alvh.no-ip.org>

Commit: a61fd5334eb1040d0dcec0368702398a5b49152c
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2015-03-16T15:06:34Z
Releases: 9.5.0
Support opfamily members in get_object_address

In the spirit of 890192e99af and 4464303405f: have get_object_address
understand individual pg_amop and pg_amproc objects.  There is no way to
refer to such objects directly in the grammar -- rather, they are almost
always considered an integral part of the opfamily that contains them.
(The only case that deals with them individually is ALTER OPERATOR
FAMILY ADD/DROP, which carries the opfamily address separately and thus
does not need it to be part of each added/dropped element's address.)
In event triggers it becomes possible to become involved with individual
amop/amproc elements, and this commit enables pg_get_object_address to
do so as well.

To make the overall coding simpler, this commit also slightly changes
the get_object_address representation for opclasses and opfamilies:
instead of having the AM name in the objargs array, I moved it as the
first element of the objnames array.  This enables the new code to use
objargs for the type names used by pg_amop and pg_amproc.

Reviewed by: Stephen Frost

Files