diff options
Diffstat (limited to 'src/backend/parser/analyze.c')
-rw-r--r-- | src/backend/parser/analyze.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 99efae80721..90818b153b8 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.277 2003/06/25 04:19:24 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.278 2003/07/03 19:07:30 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -459,7 +459,7 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt) qry->distinctClause = NIL; /* fix where clause */ - qual = transformWhereClause(pstate, stmt->whereClause); + qual = transformWhereClause(pstate, stmt->whereClause, "WHERE"); /* done building the range table and jointree */ qry->rtable = pstate->p_rtable; @@ -1588,7 +1588,8 @@ transformIndexStmt(ParseState *pstate, IndexStmt *stmt) /* no to join list, yes to namespace */ addRTEtoQuery(pstate, rte, false, true); - stmt->whereClause = transformWhereClause(pstate, stmt->whereClause); + stmt->whereClause = transformWhereClause(pstate, stmt->whereClause, + "WHERE"); } /* take care of any index expressions */ @@ -1699,7 +1700,8 @@ transformRuleStmt(ParseState *pstate, RuleStmt *stmt, } /* take care of the where clause */ - stmt->whereClause = transformWhereClause(pstate, stmt->whereClause); + stmt->whereClause = transformWhereClause(pstate, stmt->whereClause, + "WHERE"); if (length(pstate->p_rtable) != 2) /* naughty, naughty... */ elog(ERROR, "Rule WHERE condition may not contain references to other relations"); @@ -1891,13 +1893,14 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt) markTargetListOrigins(pstate, qry->targetList); /* transform WHERE */ - qual = transformWhereClause(pstate, stmt->whereClause); + qual = transformWhereClause(pstate, stmt->whereClause, "WHERE"); /* * Initial processing of HAVING clause is just like WHERE clause. * Additional work will be done in optimizer/plan/planner.c. */ - qry->havingQual = transformWhereClause(pstate, stmt->havingClause); + qry->havingQual = transformWhereClause(pstate, stmt->havingClause, + "HAVING"); /* * Transform sorting/grouping stuff. Do ORDER BY first because both @@ -1918,8 +1921,10 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt) qry->targetList, &qry->sortClause); - qry->limitOffset = stmt->limitOffset; - qry->limitCount = stmt->limitCount; + qry->limitOffset = transformLimitClause(pstate, stmt->limitOffset, + "OFFSET"); + qry->limitCount = transformLimitClause(pstate, stmt->limitCount, + "LIMIT"); qry->rtable = pstate->p_rtable; qry->jointree = makeFromExpr(pstate->p_joinlist, qual); @@ -2124,8 +2129,10 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) if (tllen != length(qry->targetList)) elog(ERROR, "ORDER BY on a UNION/INTERSECT/EXCEPT result must be on one of the result columns"); - qry->limitOffset = limitOffset; - qry->limitCount = limitCount; + qry->limitOffset = transformLimitClause(pstate, limitOffset, + "OFFSET"); + qry->limitCount = transformLimitClause(pstate, limitCount, + "LIMIT"); qry->rtable = pstate->p_rtable; qry->jointree = makeFromExpr(pstate->p_joinlist, NULL); @@ -2376,7 +2383,7 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt) qry->targetList = transformTargetList(pstate, stmt->targetList); - qual = transformWhereClause(pstate, stmt->whereClause); + qual = transformWhereClause(pstate, stmt->whereClause, "WHERE"); qry->rtable = pstate->p_rtable; qry->jointree = makeFromExpr(pstate->p_joinlist, qual); |