Andrew Dunstan avatar Andrew Dunstan committed bbe25a0

possible flatten_join_alias_vars_mutator fix

Comments (0)

Files changed (1)

src/backend/optimizer/util/var.c

 			/* Must expand whole-row reference */
 			RowExpr    *rowexpr;
 			List	   *fields = NIL;
+			List	   *colnames = NIL;
 			AttrNumber	attnum;
-			ListCell   *l;
+			ListCell   *l, *col;
+			Node       *newcol;
 
 			attnum = 0;
-			foreach(l, rte->joinaliasvars)
+			forboth(l, rte->joinaliasvars, col, rte->eref->colnames)
 			{
 				newvar = (Node *) lfirst(l);
 				attnum++;
 				/* (also takes care of setting inserted_sublink if needed) */
 				newvar = flatten_join_alias_vars_mutator(newvar, context);
 				fields = lappend(fields, newvar);
+				newcol = copyObject((Node *) lfirst(col));
+				colnames = lappend(colnames, newcol);
 			}
 			rowexpr = makeNode(RowExpr);
 			rowexpr->args = fields;
 			rowexpr->row_typeid = var->vartype;
 			rowexpr->row_format = COERCE_IMPLICIT_CAST;
-			rowexpr->colnames = NIL;
+			rowexpr->colnames = colnames;
 			rowexpr->location = var->location;
 
 			return (Node *) rowexpr;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.