aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-06-04 15:48:17 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-06-04 15:48:17 -0400
commita9143774958e861dc1e2c198ad4c0a4a6d0b9800 (patch)
tree7a7bd8f49be2c33103ad34c13ac5e3fc48439aab /src
parent048417511aef8d5fb2d541b17b73afc730935cd5 (diff)
downloadpostgresql-a9143774958e861dc1e2c198ad4c0a4a6d0b9800.tar.gz
postgresql-a9143774958e861dc1e2c198ad4c0a4a6d0b9800.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/analyze.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index b2032870477..4867685c7f9 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -999,7 +999,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)
@@ -1162,6 +1162,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);
/*