From e56dd7cf5078d9651d715a72cd802a3aa346c63a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 8 Sep 2017 19:04:32 -0400 Subject: [PATCH] Fix uninitialized-variable bug. map_partition_varattnos() failed to set its found_whole_row output parameter if the given expression list was NIL. This seems to be a pre-existing bug that chanced to be exposed by commit 6f6b99d13. It might be unreachable in v10, but I have little faith in that proposition, so back-patch. Per buildfarm. --- src/backend/catalog/partition.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 7e426ba9c8..c94ee941de 100644 --- a/src/backend/catalog/partition.c +++ b/src/backend/catalog/partition.c @@ -1120,21 +1120,23 @@ map_partition_varattnos(List *expr, int target_varno, Relation partrel, Relation parent, bool *found_whole_row) { - AttrNumber *part_attnos; - bool my_found_whole_row; + bool my_found_whole_row = false; - if (expr == NIL) - return NIL; + if (expr != NIL) + { + AttrNumber *part_attnos; + + part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), + RelationGetDescr(parent), + gettext_noop("could not convert row type")); + expr = (List *) map_variable_attnos((Node *) expr, + target_varno, 0, + part_attnos, + RelationGetDescr(parent)->natts, + RelationGetForm(partrel)->reltype, + &my_found_whole_row); + } - part_attnos = convert_tuples_by_name_map(RelationGetDescr(partrel), - RelationGetDescr(parent), - gettext_noop("could not convert row type")); - expr = (List *) map_variable_attnos((Node *) expr, - target_varno, 0, - part_attnos, - RelationGetDescr(parent)->natts, - RelationGetForm(partrel)->reltype, - &my_found_whole_row); if (found_whole_row) *found_whole_row = my_found_whole_row; -- 2.40.0