diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index ca32a37..e89bebf 100644
*** a/src/backend/parser/parse_relation.c
--- b/src/backend/parser/parse_relation.c
*************** expandRTE(RangeTblEntry *rte, int rtinde
*** 2205,2213 ****
  					varattno++;
  					Assert(varattno == te->resno);
  
  					if (colnames)
  					{
- 						/* Assume there is one alias per target item */
  						char	   *label = strVal(lfirst(aliasp_item));
  
  						*colnames = lappend(*colnames, makeString(pstrdup(label)));
--- 2205,2223 ----
  					varattno++;
  					Assert(varattno == te->resno);
  
+ 					/*
+ 					 * In scenarios where columns have been added to a view
+ 					 * since the outer query was originally parsed, there can
+ 					 * be more items in the subquery tlist than the outer
+ 					 * query expects.  We should ignore such extra column(s)
+ 					 * --- compare the behavior for composite-returning
+ 					 * functions, in the RTE_FUNCTION case below.
+ 					 */
+ 					if (!aliasp_item)
+ 						break;
+ 
  					if (colnames)
  					{
  						char	   *label = strVal(lfirst(aliasp_item));
  
  						*colnames = lappend(*colnames, makeString(pstrdup(label)));
