Changeset: 35ebc65eb74c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=35ebc65eb74c
Modified Files:
        sql/src/server/sql_parser.mx
        sql/src/test/BugTracker/Tests/union_order.stable.err
        sql/src/test/BugTracker/Tests/union_order.stable.out
Branch: Jun2010
Log Message:

fixed (restored) order_by over union_all

After Niels' "back port of fix, in select with order by"
(http://dev.monetdb.org/hg/MonetDB/rev/77151d685024)
queries like
(SELECT ...) UNION ALL (SELECT ...) ORDER BY ...;
triggered (IMHO incorrectly) an error like
"!ORDER BY: missing select operator"

In fact, this checking (IMHO incorrectly) approved one of these errors:
http://dev.monetdb.org/hg/MonetDB/rev/9e691b3fe553

This checkin refines Niels' original fix by (re-)allowing
order by not only on top of (plain) SELECT statements,
but also on top of UNION ALL statements.
I also revert the incorrect output approval.


diffs (44 lines):

diff -r b54e116ef646 -r 35ebc65eb74c sql/src/server/sql_parser.mx
--- a/sql/src/server/sql_parser.mx      Sun Jul 11 11:32:41 2010 +0200
+++ b/sql/src/server/sql_parser.mx      Sun Jul 11 20:06:16 2010 +0200
@@ -2922,7 +2922,7 @@
         { 
          $$ = $1;
          if ($2 || $3 || $4) {
-               if ($1 != NULL && $1->token == SQL_SELECT) {
+               if ($1 != NULL && ($1->token == SQL_SELECT || $1->token == 
SQL_UNION)) {
                        SelectNode *s = (SelectNode*)$1;
        
                        s -> orderby = $2;
diff -r b54e116ef646 -r 35ebc65eb74c 
sql/src/test/BugTracker/Tests/union_order.stable.err
--- a/sql/src/test/BugTracker/Tests/union_order.stable.err      Sun Jul 11 
11:32:41 2010 +0200
+++ b/sql/src/test/BugTracker/Tests/union_order.stable.err      Sun Jul 11 
20:06:16 2010 +0200
@@ -10,13 +10,6 @@
 # 15:51:29 >  Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb 
--host=localhost --port=36178 
 # 15:51:29 >  
 
-MAPI  = mone...@alf:31841
-QUERY = select data from tmp_one
-ERROR = !ORDER BY: missing select operator in: "select data from tmp_one
-        !union
-        !select data from tmp_two
-        !order by data
-        !;"
 
 # 15:51:29 >  
 # 15:51:29 >  Done.
diff -r b54e116ef646 -r 35ebc65eb74c 
sql/src/test/BugTracker/Tests/union_order.stable.out
--- a/sql/src/test/BugTracker/Tests/union_order.stable.out      Sun Jul 11 
11:32:41 2010 +0200
+++ b/sql/src/test/BugTracker/Tests/union_order.stable.out      Sun Jul 11 
20:06:16 2010 +0200
@@ -28,7 +28,10 @@
 % data # name
 % decimal # type
 % 6 # length
-#select *
+% .tmp_one # table_name
+% data # name
+% decimal # type
+% 6 # length
 % .foo # table_name
 % data # name
 % decimal # type
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to