]> granicus.if.org Git - postgresql/commitdiff
Fix object identities for pg_conversion objects
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 18 Feb 2015 17:28:11 +0000 (14:28 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 18 Feb 2015 17:28:11 +0000 (14:28 -0300)
We were neglecting to schema-qualify them.

Backpatch to 9.3, where object identities were introduced as a concept
by commit f8348ea32ec8.

src/backend/catalog/objectaddress.c
src/test/regress/expected/object_address.out

index 825d8b2e131c01582f13433ac9d10d42affbb36c..2f407337fbf76d0e0643c5f51401af87c714edef 100644 (file)
@@ -3415,6 +3415,7 @@ getObjectIdentityParts(const ObjectAddress *object,
                        {
                                HeapTuple       conTup;
                                Form_pg_conversion conForm;
+                               char       *schema;
 
                                conTup = SearchSysCache1(CONVOID,
                                                                                 ObjectIdGetDatum(object->objectId));
@@ -3422,10 +3423,13 @@ getObjectIdentityParts(const ObjectAddress *object,
                                        elog(ERROR, "cache lookup failed for conversion %u",
                                                 object->objectId);
                                conForm = (Form_pg_conversion) GETSTRUCT(conTup);
+                               schema = get_namespace_name(conForm->connamespace);
                                appendStringInfoString(&buffer,
-                                                               quote_identifier(NameStr(conForm->conname)));
+                                                               quote_qualified_identifier(schema,
+                                                                                                                  NameStr(conForm->conname)));
                                if (objname)
                                        *objname = list_make1(pstrdup(NameStr(conForm->conname)));
+                               pfree(schema);
                                ReleaseSysCache(conTup);
                                break;
                        }
index 8e11b427590c7675f8c7c02f935edce3eff82a1d..05e0e12845ec9b8fe133a8bf5efdaf5ac9adcb10 100644 (file)
@@ -370,7 +370,7 @@ SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)).*,
  cast                      |            |                   | (bigint AS integer)                                                  | t
  table constraint          | addr_nsp   |                   | a_chk on addr_nsp.gentable                                           | t
  domain constraint         | addr_nsp   |                   | domconstr on addr_nsp.gendomain                                      | t
- conversion                | pg_catalog | ascii_to_mic      | ascii_to_mic                                                         | t
+ conversion                | pg_catalog | ascii_to_mic      | pg_catalog.ascii_to_mic                                              | t
  language                  |            | plpgsql           | plpgsql                                                              | t
  schema                    |            | addr_nsp          | addr_nsp                                                             | t
  operator class            | pg_catalog | int4_ops          | pg_catalog.int4_ops for btree                                        | t