*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.68 1998/01/20 22:11:51 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.69 1998/02/06 16:46:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
/* fix where clause */
qry->qual = transformWhereClause(pstate, stmt->whereClause);
-
+ qry->hasSubLinks = pstate->p_hasSubLinks;
+
qry->rtable = pstate->p_rtable;
qry->resultRelation = refnameRangeTablePosn(pstate, stmt->relname, NULL);
/* fix where clause */
qry->qual = transformWhereClause(pstate, stmt->whereClause);
-
+ qry->hasSubLinks = pstate->p_hasSubLinks;
+
/* now the range table will not change */
qry->rtable = pstate->p_rtable;
qry->resultRelation = refnameRangeTablePosn(pstate, stmt->relname, NULL);
static Query *
transformIndexStmt(ParseState *pstate, IndexStmt *stmt)
{
- Query *q;
+ Query *qry;
- q = makeNode(Query);
- q->commandType = CMD_UTILITY;
+ qry = makeNode(Query);
+ qry->commandType = CMD_UTILITY;
/* take care of the where clause */
stmt->whereClause = transformWhereClause(pstate, stmt->whereClause);
+ qry->hasSubLinks = pstate->p_hasSubLinks;
+
stmt->rangetable = pstate->p_rtable;
- q->utilityStmt = (Node *) stmt;
+ qry->utilityStmt = (Node *) stmt;
- return q;
+ return qry;
}
/*
static Query *
transformExtendStmt(ParseState *pstate, ExtendStmt *stmt)
{
- Query *q;
+ Query *qry;
- q = makeNode(Query);
- q->commandType = CMD_UTILITY;
+ qry = makeNode(Query);
+ qry->commandType = CMD_UTILITY;
/* take care of the where clause */
stmt->whereClause = transformWhereClause(pstate, stmt->whereClause);
+ qry->hasSubLinks = pstate->p_hasSubLinks;
+
stmt->rangetable = pstate->p_rtable;
- q->utilityStmt = (Node *) stmt;
- return q;
+ qry->utilityStmt = (Node *) stmt;
+ return qry;
}
/*
static Query *
transformRuleStmt(ParseState *pstate, RuleStmt *stmt)
{
- Query *q;
+ Query *qry;
List *actions;
- q = makeNode(Query);
- q->commandType = CMD_UTILITY;
+ qry = makeNode(Query);
+ qry->commandType = CMD_UTILITY;
actions = stmt->actions;
/* take care of the where clause */
stmt->whereClause = transformWhereClause(pstate, stmt->whereClause);
+ qry->hasSubLinks = pstate->p_hasSubLinks;
- q->utilityStmt = (Node *) stmt;
- return q;
+ qry->utilityStmt = (Node *) stmt;
+ return qry;
}
qry->targetList = transformTargetList(pstate, stmt->targetList);
qry->qual = transformWhereClause(pstate, stmt->whereClause);
+ qry->hasSubLinks = pstate->p_hasSubLinks;
qry->sortClause = transformSortClause(pstate,
stmt->sortClause,
qry->targetList = transformTargetList(pstate, stmt->targetList);
qry->qual = transformWhereClause(pstate, stmt->whereClause);
+ qry->hasSubLinks = pstate->p_hasSubLinks;
qry->rtable = pstate->p_rtable;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.16 1998/02/05 17:22:29 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.17 1998/02/06 16:46:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
SubLink *sublink = (SubLink *) expr;
QueryTreeList *qtree;
List *llist;
-
+
+ pstate->p_hasSubLinks = true;
+
qtree = parse_analyze(lcons(sublink->subselect,NIL), pstate);
Assert(qtree->len == 1);
sublink->subselect = (Node *) qtree->qtrees[0];
-
+
foreach(llist, sublink->lefthand)
lfirst(llist) = transformExpr(pstate, lfirst(llist), precedence);
{
Node *lexpr = lfirst(elist);
Node *rexpr = lfirst(right_expr);
- TargetEntry *tent = (TargetEntry *)rexpr;
+ TargetEntry *tent = (TargetEntry *)rexpr;
Expr *op_expr;
op_expr = make_op(op, lexpr, tent->expr);