diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-06-04 15:48:25 -0400 | 
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-06-04 15:48:25 -0400 | 
| commit | ab1aaf3d220645501a33a4f044d42507f280c8d7 (patch) | |
| tree | d530c281fbb015497aa8a4a2e3391284f43cc3e2 | |
| parent | bc0550f994539b4cd3b93487439c754e251fedb8 (diff) | |
Expose the "*VALUES*" alias that we generate for a stand-alone VALUES list.
We were trying to make that strictly an internal implementation detail,
but it turns out that it's exposed anyway when dumping a view defined
like
	CREATE VIEW test_view AS VALUES (1), (2), (3) ORDER BY 1;
This comes out as
	CREATE VIEW ... ORDER BY "*VALUES*".column1;
which fails to parse when reloading the dump.
Hacking ruleutils.c to suppress the column qualification looks like it'd
be a risky business, so instead promote the RTE alias to full-fledged
usability.
Per bug #6049 from Dylan Adams.  Back-patch to all supported branches.
| -rw-r--r-- | src/backend/parser/analyze.c | 3 | 
1 files changed, 2 insertions, 1 deletions
| diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 70cdb593f73..4e83e145299 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -909,7 +909,7 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt)   *	  transforms a VALUES clause that's being used as a standalone SELECT   *   * We build a Query containing a VALUES RTE, rather as if one had written - *			SELECT * FROM (VALUES ...) + *			SELECT * FROM (VALUES ...) AS "*VALUES*"   */  static Query *  transformValuesClause(ParseState *pstate, SelectStmt *stmt) @@ -1034,6 +1034,7 @@ transformValuesClause(ParseState *pstate, SelectStmt *stmt)  	rtr->rtindex = list_length(pstate->p_rtable);  	Assert(rte == rt_fetch(rtr->rtindex, pstate->p_rtable));  	pstate->p_joinlist = lappend(pstate->p_joinlist, rtr); +	pstate->p_relnamespace = lappend(pstate->p_relnamespace, rte);  	pstate->p_varnamespace = lappend(pstate->p_varnamespace, rte);  	/* | 
