diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-06-04 15:48:31 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-06-04 15:48:31 -0400 |
commit | 1c2af01b98c3aece7e5f6978137effcf06e8b81d (patch) | |
tree | ce137b1e2ed40836e7a28694d5cda8a213ed1c1a | |
parent | 918eb0f34f2af3e0d2823a164d22b6906d46dfcd (diff) | |
download | postgresql-1c2af01b98c3aece7e5f6978137effcf06e8b81d.tar.gz postgresql-1c2af01b98c3aece7e5f6978137effcf06e8b81d.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.
-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 c1868664ff2..1fb115578bc 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -916,7 +916,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) @@ -1041,6 +1041,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); /* |