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