aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_relation.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser/parse_relation.c')
-rw-r--r--src/backend/parser/parse_relation.c38
1 files changed, 18 insertions, 20 deletions
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 6e391f4eb8b..031bfa8fe24 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/parser/parse_relation.c,v 1.103 2005/03/31 22:46:13 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/parse_relation.c,v 1.104 2005/04/06 16:34:06 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -910,15 +910,15 @@ addRangeTableEntryForSubquery(ParseState *pstate,
{
TargetEntry *te = (TargetEntry *) lfirst(tlistitem);
- if (te->resdom->resjunk)
+ if (te->resjunk)
continue;
varattno++;
- Assert(varattno == te->resdom->resno);
+ Assert(varattno == te->resno);
if (varattno > numaliases)
{
char *attrname;
- attrname = pstrdup(te->resdom->resname);
+ attrname = pstrdup(te->resname);
eref->colnames = lappend(eref->colnames, makeString(attrname));
}
}
@@ -1260,10 +1260,10 @@ expandRTE(List *rtable, int rtindex, int sublevels_up,
{
TargetEntry *te = (TargetEntry *) lfirst(tlistitem);
- if (te->resdom->resjunk)
+ if (te->resjunk)
continue;
varattno++;
- Assert(varattno == te->resdom->resno);
+ Assert(varattno == te->resno);
if (colnames)
{
@@ -1279,8 +1279,8 @@ expandRTE(List *rtable, int rtindex, int sublevels_up,
Var *varnode;
varnode = makeVar(rtindex, varattno,
- te->resdom->restype,
- te->resdom->restypmod,
+ exprType((Node *) te->expr),
+ exprTypmod((Node *) te->expr),
sublevels_up);
*colvars = lappend(*colvars, varnode);
@@ -1532,14 +1532,12 @@ expandRelAttrs(ParseState *pstate, List *rtable, int rtindex, int sublevels_up)
{
char *label = strVal(lfirst(name));
Node *varnode = (Node *) lfirst(var);
- TargetEntry *te = makeNode(TargetEntry);
-
- te->resdom = makeResdom((AttrNumber) pstate->p_next_resno++,
- exprType(varnode),
- exprTypmod(varnode),
- label,
- false);
- te->expr = (Expr *) varnode;
+ TargetEntry *te;
+
+ te = makeTargetEntry((Expr *) varnode,
+ (AttrNumber) pstate->p_next_resno++,
+ label,
+ false);
te_list = lappend(te_list, te);
}
@@ -1641,11 +1639,11 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
TargetEntry *te = get_tle_by_resno(rte->subquery->targetList,
attnum);
- if (te == NULL || te->resdom->resjunk)
+ if (te == NULL || te->resjunk)
elog(ERROR, "subquery %s does not have attribute %d",
rte->eref->aliasname, attnum);
- *vartype = te->resdom->restype;
- *vartypmod = te->resdom->restypmod;
+ *vartype = exprType((Node *) te->expr);
+ *vartypmod = exprTypmod((Node *) te->expr);
}
break;
case RTE_FUNCTION:
@@ -1856,7 +1854,7 @@ get_tle_by_resno(List *tlist, AttrNumber resno)
{
TargetEntry *tle = (TargetEntry *) lfirst(l);
- if (tle->resdom->resno == resno)
+ if (tle->resno == resno)
return tle;
}
return NULL;