Dept of second thoughts: keep aliasp_item in sync with tlistitem.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 27 Oct 2017 22:16:24 +0000 (18:16 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 27 Oct 2017 22:16:24 +0000 (18:16 -0400)
Commit d5b760ecb wasn't quite right, on second thought: if the
caller didn't ask for column names then it would happily emit
more Vars than if the caller did ask for column names.  This
is surely not a good idea.  Advance the aliasp_item whether or
not we're preparing a colnames list.

src/backend/parser/parse_relation.c

index e89bebfcc324aaa24fe5c14e8cbe6320624d559d..6acc21dfe6a915a2f418eab6595ec760768160a6 100644 (file)
@@ -2221,7 +2221,6 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
                        char       *label = strVal(lfirst(aliasp_item));
 
                        *colnames = lappend(*colnames, makeString(pstrdup(label)));
-                       aliasp_item = lnext(aliasp_item);
                    }
 
                    if (colvars)
@@ -2237,6 +2236,8 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
 
                        *colvars = lappend(*colvars, varnode);
                    }
+
+                   aliasp_item = lnext(aliasp_item);
                }
            }
            break;