Add missing pstrdup calls
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 31 Dec 2014 16:19:40 +0000 (13:19 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 31 Dec 2014 16:19:40 +0000 (13:19 -0300)
The one for the OCLASS_COLLATION case was noticed by
CLOBBER_CACHE_ALWAYS buildfarm members; the others I spotted by manual
code inspection.

Also remove a redundant check.

src/backend/catalog/objectaddress.c

index cd763b3b91d03dc95865b6391c1b3d9870002d80..c637dbb9ef498cc5dcf84aeadae2bde511a8bd45 100644 (file)
@@ -1513,12 +1513,6 @@ pg_get_object_address(PG_FUNCTION_ARGS)
     */
    switch (type)
    {
-       case OBJECT_LARGEOBJECT:
-           if (list_length(name) != 1)
-               ereport(ERROR,
-                       (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                        errmsg("name list length must be exactly %d", 1)));
-           break;
        case OBJECT_DOMCONSTRAINT:
        case OBJECT_OPCLASS:
        case OBJECT_OPFAMILY:
@@ -3370,7 +3364,8 @@ getObjectIdentityParts(const ObjectAddress *object,
                                       quote_qualified_identifier(schema,
                                                   NameStr(coll->collname)));
                if (objname)
-                   *objname = list_make2(schema, NameStr(coll->collname));
+                   *objname = list_make2(schema,
+                                         pstrdup(NameStr(coll->collname)));
                ReleaseSysCache(collTup);
                break;
            }
@@ -3667,7 +3662,7 @@ getObjectIdentityParts(const ObjectAddress *object,
                                 quote_identifier(NameStr(rule->rulename)));
                getRelationIdentity(&buffer, rule->ev_class, objname);
                if (objname)
-                   *objname = lappend(*objname, NameStr(rule->rulename));
+                   *objname = lappend(*objname, pstrdup(NameStr(rule->rulename)));
 
                heap_close(ruleDesc, AccessShareLock);
                break;
@@ -3693,7 +3688,7 @@ getObjectIdentityParts(const ObjectAddress *object,
                                 quote_identifier(NameStr(trig->tgname)));
                getRelationIdentity(&buffer, trig->tgrelid, objname);
                if (objname)
-                   *objname = lappend(*objname, NameStr(trig->tgname));
+                   *objname = lappend(*objname, pstrdup(NameStr(trig->tgname)));
 
                heap_close(trigDesc, AccessShareLock);
                break;
@@ -3719,7 +3714,7 @@ getObjectIdentityParts(const ObjectAddress *object,
                                 quote_identifier(NameStr(policy->polname)));
                getRelationIdentity(&buffer, policy->polrelid, objname);
                if (objname)
-                   *objname = lappend(*objname, NameStr(policy->polname));
+                   *objname = lappend(*objname, pstrdup(NameStr(policy->polname)));
 
                heap_close(polDesc, AccessShareLock);
                break;