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
This commit is contained in:
Alvaro Herrera 2020-11-06 22:52:15 -03:00
parent 8149e9f9a0
commit 8ad6a0c1bb
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
1 changed files with 2 additions and 1 deletions

View File

@ -171,13 +171,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;
}