aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2017-09-08 19:04:32 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2017-09-08 19:04:32 -0400
commite56dd7cf5078d9651d715a72cd802a3aa346c63a (patch)
tree9377412942d7d6f695d3da7892cc4a30eedad1fa /src
parentf25000c832f2e147986110116d4ba1a57b9d9256 (diff)
downloadpostgresql-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.c28
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;