Fix uninitialized-variable bug.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Sep 2017 23:04:32 +0000 (19:04 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Sep 2017 23:04:32 +0000 (19:04 -0400)
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

index 21901380cb250f09553220c8d59ff2760480dd7c..c2f304ec338c31873377488dd2732d1f7c9fa5cd 100644 (file)
@@ -916,21 +916,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;