diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-11-06 22:52:16 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2020-11-06 22:52:16 -0300 |
commit | 623644f02cbde7ad3812b201bd36213a206c3341 (patch) | |
tree | 7a102416ec6b33d9af89e0d1181fd92d5f65349d | |
parent | a05dbf477b0ef173adb1ae5d004cbeb0cf400b66 (diff) | |
download | postgresql-623644f02cbde7ad3812b201bd36213a206c3341.tar.gz postgresql-623644f02cbde7ad3812b201bd36213a206c3341.zip |
Plug memory leak in index_get_partition
The list of indexes was being leaked when asked for an index that
doesn't have an index partition in the table partition. Not a common
case admittedly --and in most cases where it occurs, caller throws an
error anyway-- but worth fixing for cleanliness and in case any
third-party code is calling this function.
While at it, remove use of lfirst_oid() to obtain a value we already
have.
Author: Justin Pryzby <pryzby@telsasoft.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/20201105203606.GF22691@telsasoft.com
-rw-r--r-- | src/backend/catalog/partition.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 239ac017fa6..4dfac39adfe 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -170,13 +170,14 @@ index_get_partition(Relation partition, Oid indexId) ReleaseSysCache(tup); if (!ispartition) continue; - if (get_partition_parent(lfirst_oid(l)) == indexId) + if (get_partition_parent(partIdx) == indexId) { list_free(idxlist); return partIdx; } } + list_free(idxlist); return InvalidOid; } |