aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_target.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-04-02 19:07:02 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-04-02 19:07:02 +0000
commit27a4f06adee023d9172abaf128e35e3cc068108a (patch)
tree701c1dd77b39df85d025fbfad0eaf505f4f25a5a /src/backend/parser/parse_target.c
parent94d8da8fec981f516b785822e145db7e23c825b0 (diff)
downloadpostgresql-27a4f06adee023d9172abaf128e35e3cc068108a.tar.gz
postgresql-27a4f06adee023d9172abaf128e35e3cc068108a.zip
Get rid of crocky use of RangeVar nodes in parser to represent partially
transformed whole-row variables. Cleaner to use regular whole-row Vars.
Diffstat (limited to 'src/backend/parser/parse_target.c')
-rw-r--r--src/backend/parser/parse_target.c21
1 files changed, 2 insertions, 19 deletions
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index 6bed23f9064..c9c44ac2389 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/parser/parse_target.c,v 1.115 2004/02/13 01:08:20 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/parse_target.c,v 1.116 2004/04/02 19:06:58 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -60,14 +60,6 @@ transformTargetEntry(ParseState *pstate,
if (expr == NULL)
expr = transformExpr(pstate, node);
- if (IsA(expr, RangeVar))
- ereport(ERROR,
- (errcode(ERRCODE_SYNTAX_ERROR),
- errmsg("relation reference \"%s\" cannot be used as a select-list entry",
- ((RangeVar *) expr)->relname),
- errhint("Write \"%s\".* to denote all the columns of the relation.",
- ((RangeVar *) expr)->relname)));
-
type_id = exprType(expr);
type_mod = exprTypmod(expr);
@@ -243,21 +235,12 @@ markTargetListOrigins(ParseState *pstate, List *targetlist)
static void
markTargetListOrigin(ParseState *pstate, Resdom *res, Var *var)
{
- Index levelsup;
RangeTblEntry *rte;
AttrNumber attnum;
if (var == NULL || !IsA(var, Var))
return;
- levelsup = var->varlevelsup;
- while (levelsup-- > 0)
- {
- pstate = pstate->parentParseState;
- Assert(pstate != NULL);
- }
- Assert(var->varno > 0 &&
- (int) var->varno <= length(pstate->p_rtable));
- rte = rt_fetch(var->varno, pstate->p_rtable);
+ rte = GetRTEByRangeTablePosn(pstate, var->varno, var->varlevelsup);
attnum = var->varattno;
switch (rte->rtekind)