Changeset: ab33c4b2d78f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ab33c4b2d78f
Modified Files:
        monetdb5/modules/mal/pqueue.c
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
Branch: default
Log Message:

fixed bug in tsorted/trevsorted topn case

approved new plans.


diffs (166 lines):

diff --git a/monetdb5/modules/mal/pqueue.c b/monetdb5/modules/mal/pqueue.c
--- a/monetdb5/modules/mal/pqueue.c
+++ b/monetdb5/modules/mal/pqueue.c
@@ -66,7 +66,7 @@ str PQtopn_minmax(Client cntxt, MalBlkPt
 
                if ((b->tsorted && max) || (b->trevsorted && !max)) {
                        size_t l = BATcount(b) < size ? 0 : BATcount(b)-size;
-                       bn = BATslice(b, l, size);
+                       bn = BATslice(b, l, BATcount(b));
                } else
                        bn = BATslice(b, 0, size);
                r = BATmirror(BATmark(bn, 0));
diff --git 
a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out 
b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
--- a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
+++ b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
@@ -303,25 +303,24 @@ function user.s11_1{autoCommit=true}():v
     (X_9,r1_9) := sql.bind(X_2,"sys","oblo","a",2);
     X_12 := sql.bind(X_2,"sys","oblo","a",1);
     X_14 := sql.delta(X_6,X_9,r1_9,X_12);
-    X_15 := algebra.leftfetchjoin(X_3,X_14);
+    r1_21 := algebra.leftfetchjoin(X_3,X_14);
     X_16 := calc.wrd(0:wrd);
     X_18 := calc.wrd(2:wrd);
     X_20 := calc.+(X_16,X_18);
-    X_21 := pqueue.topn_max(X_15,X_20);
-    X_22 := calc.oid(0@0);
-    X_24 := algebra.markT(X_21,X_22);
-    X_25 := bat.reverse(X_24);
-    X_26 := algebra.leftfetchjoin(X_25,X_15);
-    X_27 := calc.wrd(0:wrd);
-    X_28 := calc.wrd(2:wrd);
-    X_29 := calc.+(X_27,X_28);
-    X_30 := calc.-(X_29,1);
-    X_31 := algebra.subslice(X_26,X_27,X_30);
-    X_32 := algebra.leftfetchjoin(X_31,X_26);
-    X_33 := sql.resultSet(1,1,X_32);
-    sql.rsColumn(X_33,"sys.oblo","a","int",32,0,X_32);
-    X_38 := io.stdout();
-    sql.exportResult(X_38,X_33);
+    X_21 := pqueue.topn_max(r1_21,X_20);
+    X_22 := algebra.leftfetchjoin(X_21,r1_21);
+    (X_23,r1_23,r2_23) := algebra.subsort(X_22,false,false);
+    X_27 := algebra.leftfetchjoin(r1_23,X_22);
+    X_28 := calc.wrd(0:wrd);
+    X_29 := calc.wrd(2:wrd);
+    X_30 := calc.+(X_28,X_29);
+    X_31 := calc.-(X_30,1);
+    X_32 := algebra.subslice(X_27,X_28,X_31);
+    X_33 := algebra.leftfetchjoin(X_32,X_27);
+    X_34 := sql.resultSet(1,1,X_33);
+    sql.rsColumn(X_34,"sys.oblo","a","int",32,0,X_33);
+    X_39 := io.stdout();
+    sql.exportResult(X_39,X_34);
 end s11_1;
 # querylog.define("explain select * from oblo order by a limit 
2;","minimal_pipe")
 #EXPLAIN select * from oblo ORDER BY a LIMIT 2 OFFSET 1;
@@ -336,27 +335,26 @@ function user.s12_1{autoCommit=true}():v
     (X_9,r1_9) := sql.bind(X_2,"sys","oblo","a",2);
     X_12 := sql.bind(X_2,"sys","oblo","a",1);
     X_14 := sql.delta(X_6,X_9,r1_9,X_12);
-    X_15 := algebra.leftfetchjoin(X_3,X_14);
+    r1_24 := algebra.leftfetchjoin(X_3,X_14);
     X_16 := calc.wrd(0:wrd);
     X_18 := calc.wrd(2:wrd);
     X_20 := calc.wrd(1:wrd);
     X_22 := calc.+(X_18,X_20);
     X_23 := calc.+(X_16,X_22);
-    X_24 := pqueue.topn_max(X_15,X_23);
-    X_25 := calc.oid(0@0);
-    X_27 := algebra.markT(X_24,X_25);
-    X_28 := bat.reverse(X_27);
-    X_29 := algebra.leftfetchjoin(X_28,X_15);
-    X_30 := calc.wrd(1:wrd);
-    X_31 := calc.wrd(2:wrd);
-    X_32 := calc.+(X_30,X_31);
-    X_33 := calc.-(X_32,1);
-    X_34 := algebra.subslice(X_29,X_30,X_33);
-    X_35 := algebra.leftfetchjoin(X_34,X_29);
-    X_36 := sql.resultSet(1,1,X_35);
-    sql.rsColumn(X_36,"sys.oblo","a","int",32,0,X_35);
-    X_42 := io.stdout();
-    sql.exportResult(X_42,X_36);
+    X_24 := pqueue.topn_max(r1_24,X_23);
+    X_25 := algebra.leftfetchjoin(X_24,r1_24);
+    (X_26,r1_26,r2_26) := algebra.subsort(X_25,false,false);
+    X_30 := algebra.leftfetchjoin(r1_26,X_25);
+    X_31 := calc.wrd(1:wrd);
+    X_32 := calc.wrd(2:wrd);
+    X_33 := calc.+(X_31,X_32);
+    X_34 := calc.-(X_33,1);
+    X_35 := algebra.subslice(X_30,X_31,X_34);
+    X_36 := algebra.leftfetchjoin(X_35,X_30);
+    X_37 := sql.resultSet(1,1,X_36);
+    sql.rsColumn(X_37,"sys.oblo","a","int",32,0,X_36);
+    X_44 := io.stdout();
+    sql.exportResult(X_44,X_37);
 end s12_1;
 # querylog.define("explain select * from oblo order by a limit 2 offset 
1;","minimal_pipe")
 #EXPLAIN select * from oblo ORDER BY a LIMIT 1 OFFSET 2;
@@ -371,27 +369,26 @@ function user.s13_1{autoCommit=true}():v
     (X_9,r1_9) := sql.bind(X_2,"sys","oblo","a",2);
     X_12 := sql.bind(X_2,"sys","oblo","a",1);
     X_14 := sql.delta(X_6,X_9,r1_9,X_12);
-    X_15 := algebra.leftfetchjoin(X_3,X_14);
+    r1_24 := algebra.leftfetchjoin(X_3,X_14);
     X_16 := calc.wrd(0:wrd);
     X_18 := calc.wrd(1:wrd);
     X_20 := calc.wrd(2:wrd);
     X_22 := calc.+(X_18,X_20);
     X_23 := calc.+(X_16,X_22);
-    X_24 := pqueue.topn_max(X_15,X_23);
-    X_25 := calc.oid(0@0);
-    X_27 := algebra.markT(X_24,X_25);
-    X_28 := bat.reverse(X_27);
-    X_29 := algebra.leftfetchjoin(X_28,X_15);
-    X_30 := calc.wrd(2:wrd);
-    X_31 := calc.wrd(1:wrd);
-    X_32 := calc.+(X_30,X_31);
-    X_33 := calc.-(X_32,1);
-    X_34 := algebra.subslice(X_29,X_30,X_33);
-    X_35 := algebra.leftfetchjoin(X_34,X_29);
-    X_36 := sql.resultSet(1,1,X_35);
-    sql.rsColumn(X_36,"sys.oblo","a","int",32,0,X_35);
-    X_42 := io.stdout();
-    sql.exportResult(X_42,X_36);
+    X_24 := pqueue.topn_max(r1_24,X_23);
+    X_25 := algebra.leftfetchjoin(X_24,r1_24);
+    (X_26,r1_26,r2_26) := algebra.subsort(X_25,false,false);
+    X_30 := algebra.leftfetchjoin(r1_26,X_25);
+    X_31 := calc.wrd(2:wrd);
+    X_32 := calc.wrd(1:wrd);
+    X_33 := calc.+(X_31,X_32);
+    X_34 := calc.-(X_33,1);
+    X_35 := algebra.subslice(X_30,X_31,X_34);
+    X_36 := algebra.leftfetchjoin(X_35,X_30);
+    X_37 := sql.resultSet(1,1,X_36);
+    sql.rsColumn(X_37,"sys.oblo","a","int",32,0,X_36);
+    X_44 := io.stdout();
+    sql.exportResult(X_44,X_37);
 end s13_1;
 # querylog.define("explain select * from oblo order by a limit 1 offset 
2;","minimal_pipe")
 #select * from oblo;
diff --git 
a/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out 
b/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
--- a/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
+++ b/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
@@ -42,14 +42,14 @@ Ready.
 function user.s5_1{autoCommit=true}():void;
     X_2 := sql.mvc();
     X_3:bat[:oid,:oid]  := sql.tid(X_2,"sys","t2564");
-    X_6 := sql.bind(X_2,"sys","t2564","c1",0);
-    (X_9,r1_9) := sql.bind(X_2,"sys","t2564","c1",2);
-    X_12 := sql.bind(X_2,"sys","t2564","c1",1);
+    X_6 := sql.bind(X_2,"sys","t2564","c3",0);
+    (X_9,r1_9) := sql.bind(X_2,"sys","t2564","c3",2);
+    X_12 := sql.bind(X_2,"sys","t2564","c3",1);
     X_14 := sql.delta(X_6,X_9,r1_9,X_12);
     X_15 := algebra.leftfetchjoin(X_3,X_14);
-    X_16 := sql.bind(X_2,"sys","t2564","c3",0);
-    (X_18,r1_18) := sql.bind(X_2,"sys","t2564","c3",2);
-    X_20 := sql.bind(X_2,"sys","t2564","c3",1);
+    X_16 := sql.bind(X_2,"sys","t2564","c1",0);
+    (X_18,r1_18) := sql.bind(X_2,"sys","t2564","c1",2);
+    X_20 := sql.bind(X_2,"sys","t2564","c1",1);
     X_21 := sql.delta(X_16,X_18,r1_18,X_20);
     X_22 := algebra.leftfetchjoin(X_3,X_21);
     X_23 := sql.bind(X_2,"sys","t2564","c2",0);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to