diff options
| author | Bruce Momjian <bruce@momjian.us> | 1997-12-29 04:31:50 +0000 |
|---|---|---|
| committer | Bruce Momjian <bruce@momjian.us> | 1997-12-29 04:31:50 +0000 |
| commit | a1dd40905304bacfaf4a1bad6a45114e8ccc9e8d (patch) | |
| tree | e15b1cc8204aff1506df1cb0b3ec6f5e6b1b2596 /src/backend/parser | |
| parent | 499b13c99403a37ceec69d9cc4faec1c86b34e3c (diff) | |
| download | postgresql-a1dd40905304bacfaf4a1bad6a45114e8ccc9e8d.tar.gz | |
Fix for ORDER BY in UNION.
Diffstat (limited to 'src/backend/parser')
| -rw-r--r-- | src/backend/parser/analyze.c | 7 | ||||
| -rw-r--r-- | src/backend/parser/parse_clause.c | 9 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 0d1d3dcb24..5837fa8fb7 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.58 1997/12/29 01:12:55 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.59 1997/12/29 04:31:28 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -828,6 +828,7 @@ transformSelectStmt(ParseState *pstate, RetrieveStmt *stmt) /* fix order clause */ qry->sortClause = transformSortClause(pstate, stmt->sortClause, + NIL, qry->targetList, qry->uniqueFlag); @@ -842,9 +843,6 @@ transformSelectStmt(ParseState *pstate, RetrieveStmt *stmt) qry->unionall = stmt->unionall; /* in child, so unionClause may be false */ qry->unionClause = transformUnionClause(stmt->unionClause, qry->targetList); - if (qry->unionClause && stmt->sortClause) - elog(WARN, "You can not use ORDER BY with UNION", NULL); - return (Query *) qry; } @@ -918,6 +916,7 @@ transformCursorStmt(ParseState *pstate, CursorStmt *stmt) /* fix order clause */ qry->sortClause = transformSortClause(pstate, stmt->sortClause, + NIL, qry->targetList, qry->uniqueFlag); /* fix group by clause */ diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index 8028329b43..204f45bb59 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.5 1997/12/29 02:09:54 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.6 1997/12/29 04:31:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -249,10 +249,11 @@ transformGroupClause(ParseState *pstate, List *grouplist, List *targetlist) */ List * transformSortClause(ParseState *pstate, - List *orderlist, List *targetlist, + List *orderlist, + List *sortlist, + List *targetlist, char *uniqueFlag) { - List *sortlist = NIL; List *s = NIL; while (orderlist != NIL) @@ -262,6 +263,8 @@ transformSortClause(ParseState *pstate, TargetEntry *restarget; Resdom *resdom; + sortlist = NIL; /* we create it on the fly here */ + restarget = find_targetlist_entry(pstate, sortby, targetlist); if (restarget == NULL) elog(WARN, "The field being ordered by must appear in the target list"); |
