]> granicus.if.org Git - postgresql/commitdiff
Fix relcache leaks in get_object_address_publication_rel()
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 8 Feb 2017 03:09:53 +0000 (22:09 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 8 Feb 2017 03:09:53 +0000 (22:09 -0500)
src/backend/catalog/objectaddress.c

index a3bb2f1c0ef1174369d3f8552ac0d073fc32027e..9029477d68c6b1232d76ed3f55cf034ca8026405 100644 (file)
@@ -1835,7 +1835,10 @@ get_object_address_publication_rel(List *objname, List *objargs,
        /* Now look up the pg_publication tuple */
        pub = GetPublicationByName(pubname, missing_ok);
        if (!pub)
+       {
+               relation_close(relation, AccessShareLock);
                return address;
+       }
 
        /* Find the publication relation mapping in syscache. */
        address.objectId =
@@ -1849,6 +1852,7 @@ get_object_address_publication_rel(List *objname, List *objargs,
                                        (errcode(ERRCODE_UNDEFINED_OBJECT),
                                         errmsg("publication relation \"%s\" in publication \"%s\" does not exist",
                                                        RelationGetRelationName(relation), pubname)));
+               relation_close(relation, AccessShareLock);
                return address;
        }