diff options
Diffstat (limited to 'src/backend/parser/analyze.c')
-rw-r--r-- | src/backend/parser/analyze.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 6676412842b..eee9c33637b 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -1281,9 +1281,12 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt) /* transform LIMIT */ qry->limitOffset = transformLimitClause(pstate, stmt->limitOffset, - EXPR_KIND_OFFSET, "OFFSET"); + EXPR_KIND_OFFSET, "OFFSET", + stmt->limitOption); qry->limitCount = transformLimitClause(pstate, stmt->limitCount, - EXPR_KIND_LIMIT, "LIMIT"); + EXPR_KIND_LIMIT, "LIMIT", + stmt->limitOption); + qry->limitOption = stmt->limitOption; /* transform window clauses after we have seen all window functions */ qry->windowClause = transformWindowDefinitions(pstate, @@ -1524,9 +1527,12 @@ transformValuesClause(ParseState *pstate, SelectStmt *stmt) false /* allow SQL92 rules */ ); qry->limitOffset = transformLimitClause(pstate, stmt->limitOffset, - EXPR_KIND_OFFSET, "OFFSET"); + EXPR_KIND_OFFSET, "OFFSET", + stmt->limitOption); qry->limitCount = transformLimitClause(pstate, stmt->limitCount, - EXPR_KIND_LIMIT, "LIMIT"); + EXPR_KIND_LIMIT, "LIMIT", + stmt->limitOption); + qry->limitOption = stmt->limitOption; if (stmt->lockingClause) ereport(ERROR, @@ -1775,9 +1781,12 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) exprLocation(list_nth(qry->targetList, tllen))))); qry->limitOffset = transformLimitClause(pstate, limitOffset, - EXPR_KIND_OFFSET, "OFFSET"); + EXPR_KIND_OFFSET, "OFFSET", + stmt->limitOption); qry->limitCount = transformLimitClause(pstate, limitCount, - EXPR_KIND_LIMIT, "LIMIT"); + EXPR_KIND_LIMIT, "LIMIT", + stmt->limitOption); + qry->limitOption = stmt->limitOption; qry->rtable = pstate->p_rtable; qry->jointree = makeFromExpr(pstate->p_joinlist, NULL); |