Commit 9c7dd350 authored by Alvaro Herrera's avatar Alvaro Herrera

Fix opclass/opfamily identity strings

The original representation uses "opcname for amname", which is good
enough; but if we replace "for" with "using", we can apply the returned
identity directly in a DROP command, as in

DROP OPERATOR CLASS opcname USING amname

This slightly simplifies code using object identities to programatically
execute commands on these kinds of objects.

Note backwards-incompatible change:
The previous representation dates back to 9.3 when object identities
were introduced by commit f8348ea3, but we don't want to change the
behavior on released branches unnecessarily and so this is not
backpatched.
parent 0d906798
...@@ -3533,7 +3533,7 @@ getObjectIdentityParts(const ObjectAddress *object, ...@@ -3533,7 +3533,7 @@ getObjectIdentityParts(const ObjectAddress *object,
appendStringInfoString(&buffer, appendStringInfoString(&buffer,
quote_qualified_identifier(schema, quote_qualified_identifier(schema,
NameStr(opcForm->opcname))); NameStr(opcForm->opcname)));
appendStringInfo(&buffer, " for %s", appendStringInfo(&buffer, " USING %s",
quote_identifier(NameStr(amForm->amname))); quote_identifier(NameStr(amForm->amname)));
if (objname) if (objname)
{ {
...@@ -4070,7 +4070,7 @@ getOpFamilyIdentity(StringInfo buffer, Oid opfid, List **objname, List **objargs ...@@ -4070,7 +4070,7 @@ getOpFamilyIdentity(StringInfo buffer, Oid opfid, List **objname, List **objargs
amForm = (Form_pg_am) GETSTRUCT(amTup); amForm = (Form_pg_am) GETSTRUCT(amTup);
schema = get_namespace_name(opfForm->opfnamespace); schema = get_namespace_name(opfForm->opfnamespace);
appendStringInfo(buffer, "%s for %s", appendStringInfo(buffer, "%s USING %s",
quote_qualified_identifier(schema, quote_qualified_identifier(schema,
NameStr(opfForm->opfname)), NameStr(opfForm->opfname)),
NameStr(amForm->amname)); NameStr(amForm->amname));
......
...@@ -373,11 +373,11 @@ SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)).*, ...@@ -373,11 +373,11 @@ SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)).*,
conversion | pg_catalog | ascii_to_mic | pg_catalog.ascii_to_mic | t conversion | pg_catalog | ascii_to_mic | pg_catalog.ascii_to_mic | t
language | | plpgsql | plpgsql | t language | | plpgsql | plpgsql | t
schema | | addr_nsp | addr_nsp | t schema | | addr_nsp | addr_nsp | t
operator class | pg_catalog | int4_ops | pg_catalog.int4_ops for btree | t operator class | pg_catalog | int4_ops | pg_catalog.int4_ops USING btree | t
operator | pg_catalog | | pg_catalog.+(integer,integer) | t operator | pg_catalog | | pg_catalog.+(integer,integer) | t
rule | | | "_RETURN" on addr_nsp.genview | t rule | | | "_RETURN" on addr_nsp.genview | t
trigger | | | t on addr_nsp.gentable | t trigger | | | t on addr_nsp.gentable | t
operator family | pg_catalog | integer_ops | pg_catalog.integer_ops for btree | t operator family | pg_catalog | integer_ops | pg_catalog.integer_ops USING btree | t
policy | | | genpol on addr_nsp.gentable | t policy | | | genpol on addr_nsp.gentable | t
collation | pg_catalog | "default" | pg_catalog."default" | t collation | pg_catalog | "default" | pg_catalog."default" | t
text search dictionary | addr_nsp | addr_ts_dict | addr_nsp.addr_ts_dict | t text search dictionary | addr_nsp | addr_ts_dict | addr_nsp.addr_ts_dict | t
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment