diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2017-09-08 19:04:32 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2017-09-08 19:04:32 -0400 |
commit | e56dd7cf5078d9651d715a72cd802a3aa346c63a (patch) | |
tree | 9377412942d7d6f695d3da7892cc4a30eedad1fa /src | |
parent | f25000c832f2e147986110116d4ba1a57b9d9256 (diff) | |
download | postgresql-e56dd7cf5078d9651d715a72cd802a3aa346c63a.tar.gz postgresql-e56dd7cf5078d9651d715a72cd802a3aa346c63a.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/catalog/partition.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/backend/catalog/partition.c b/src/backend/catalog/partition.c index 7e426ba9c88..c94ee941ded 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; |