pgsql-v9.2-fix-relcache-leaks-in-get_object_address_relobject.patch

application/octet-stream

Filename: pgsql-v9.2-fix-relcache-leaks-in-get_object_address_relobject.patch
Type: application/octet-stream
Part: 0
Message: Re: [bug] relcache leaks in get_object_address

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
Series: patch v9
File+
src/backend/catalog/objectaddress.c 9 0
 src/backend/catalog/objectaddress.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 6928835..84381dd 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -635,6 +635,9 @@ get_object_address_relobject(ObjectType objtype, List *objname,
 			get_rewrite_oid_without_relid(depname, &reloid, missing_ok);
 		address.objectSubId = 0;
 
+		if (!OidIsValid(address.objectId))
+			return address;
+
 		/*
 		 * Caller is expecting to get back the relation, even though we
 		 * didn't end up using it to find the rule.
@@ -677,6 +680,12 @@ get_object_address_relobject(ObjectType objtype, List *objname,
 				address.objectId = InvalidOid;
 				address.objectSubId = 0;
 		}
+
+		if (!OidIsValid(address.objectId))
+		{
+			heap_close(relation, AccessShareLock);
+			return address;
+		}
 	}
 
 	/* Done. */