Changeset: c6b4b2d6fc5c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c6b4b2d6fc5c
Modified Files:
        MonetDB5/src/optimizer/Tests/tst4730.stable.out
        MonetDB5/src/optimizer/opt_costModel.mx
        MonetDB5/src/optimizer/opt_emptySet.mx
        MonetDB5/src/optimizer/opt_mergetable.mx
        MonetDB5/src/optimizer/opt_mitosis.mx
        MonetDB5/src/optimizer/opt_pushranges.mx
        MonetDB5/src/optimizer/opt_support.mx
        sql/src/backends/monet5/sql_optimizer.mx
        sql/src/server/rel_bin.mx
        sql/src/server/sql_scan.mx
        sql/src/server/sql_statement.mx
        sql/src/test/BugTracker-2010/Tests/All
Branch: default
Log Message:

Merged from Jun2010 (manual)

I manually resolved the conflicts that happened for Niels' rowsProp
change.


diffs (truncated from 841 to 300 lines):

diff -r 76dd9fabceef -r c6b4b2d6fc5c MonetDB5/src/modules/kernel/algebra.mx
--- a/MonetDB5/src/modules/kernel/algebra.mx    Fri Aug 06 11:27:43 2010 +0200
+++ b/MonetDB5/src/modules/kernel/algebra.mx    Fri Aug 06 12:47:46 2010 +0200
@@ -1871,6 +1871,8 @@
                GDKerror("CMDslice: start position of slice should >= 0\n");
                return GDK_FAIL;
        }
+       if (end == wrd_nil) 
+               end = BATcount(b);
        if (start > (lng) BUN_MAX || end >= (lng) BUN_MAX) {
                GDKerror("CMDslice: argument out of range\n");
                return GDK_FAIL;
diff -r 76dd9fabceef -r c6b4b2d6fc5c 
MonetDB5/src/optimizer/Tests/CMexample.stable.out
--- a/MonetDB5/src/optimizer/Tests/CMexample.stable.out Fri Aug 06 11:27:43 
2010 +0200
+++ b/MonetDB5/src/optimizer/Tests/CMexample.stable.out Fri Aug 06 12:47:46 
2010 +0200
@@ -26,9 +26,9 @@
 # Cost model example 
     r{rows=100} := bat.new(:oid,:int);  #  2 r:bat[:oid,:int] := 
CMDBATnew(_4:oid, _5:int) {G}
     s{rows=1000} := bat.new(:oid,:int); #  3 s:bat[:oid,:int] := 
CMDBATnew(_4:oid, _8:int) {G}
-    rs{rows=501:lng} := algebra.select(s{rows=1000},1,1);#  4 
rs:bat[:oid,:int] := ALGselect(s:bat[:oid,:int], _10:int, _10:int) {G}
-    rr{rows=100:lng} := bat.reverse(r{rows=100});#  5 rr:bat[:int,:oid] := 
BKCreverse(r:bat[:oid,:int]) {G}
-    j{rows=100:lng} := algebra.join(rs{rows=501:lng},rr{rows=100:lng});#  6 
j:bat[:oid,:oid] := ALGjoin(rs:bat[:oid,:int], rr:bat[:int,:oid]) {G}
+    rs{rows=501} := algebra.select(s{rows=1000},1,1);#  4 rs:bat[:oid,:int] := 
ALGselect(s:bat[:oid,:int], _10:int, _10:int) {G}
+    rr{rows=100} := bat.reverse(r{rows=100});#  5 rr:bat[:int,:oid] := 
BKCreverse(r:bat[:oid,:int]) {G}
+    j{rows=100} := algebra.join(rs{rows=501},rr{rows=100});#  6 
j:bat[:oid,:oid] := ALGjoin(rs:bat[:oid,:int], rr:bat[:int,:oid]) {G}
     mdb.List();                         #  7 _14:void := MDBlistDetail() 
 end main;                               #  8  
 
diff -r 76dd9fabceef -r c6b4b2d6fc5c 
MonetDB5/src/optimizer/Tests/emptyset00.stable.out
--- a/MonetDB5/src/optimizer/Tests/emptyset00.stable.out        Fri Aug 06 
11:27:43 2010 +0200
+++ b/MonetDB5/src/optimizer/Tests/emptyset00.stable.out        Fri Aug 06 
12:47:46 2010 +0200
@@ -28,9 +28,9 @@
 function user.main():void;              #  0 main:void := user.main() {G}
     b := bat.new(:oid,:int);            #  1 b:bat[:oid,:int] := 
CMDBATnew(_2:oid, _3:int) {G}
     s1 := algebra.select(b,80,90);      #  2 s1:bat[:oid,:int] := 
ALGselect(b:bat[:oid,:int], _5:int, _6:int) {G}
-    s2{rows=0:lng} := bat.new(:oid,:int);#  3 s2:bat[:oid,:int] := 
CMDBATnew(_2:oid, _3:int) {G}
-    s3{rows=0:lng} := bat.new(:oid,:int);#  4 s3:bat[:oid,:int] := 
CMDBATnew(_2:oid, _3:int) {G}
-    io.print(s3{rows=0:lng});           #  5 _9:void := 
IOprint_val(s3:bat[:oid,:int]) {G}
+    s2{rows=0} := bat.new(:oid,:int);   #  3 s2:bat[:oid,:int] := 
CMDBATnew(_2:oid, _3:int) {G}
+    s3{rows=0} := bat.new(:oid,:int);   #  4 s3:bat[:oid,:int] := 
CMDBATnew(_2:oid, _3:int) {G}
+    io.print(s3{rows=0});               #  5 _9:void := 
IOprint_val(s3:bat[:oid,:int]) {G}
     mdb.List();                         #  6 _12:void := MDBlistDetail() 
 end main;                               #  7  
 
diff -r 76dd9fabceef -r c6b4b2d6fc5c 
MonetDB5/src/optimizer/Tests/emptyset01.stable.out
--- a/MonetDB5/src/optimizer/Tests/emptyset01.stable.out        Fri Aug 06 
11:27:43 2010 +0200
+++ b/MonetDB5/src/optimizer/Tests/emptyset01.stable.out        Fri Aug 06 
12:47:46 2010 +0200
@@ -39,7 +39,7 @@
     V1 := bat.new(:oid,:int);           #  1 V1:bat[:oid,:int] := 
CMDBATnew(_2:oid, _3:int) {G}
     V7 := bat.new(:oid,:int);           #  2 V7:bat[:oid,:int] := 
CMDBATnew(_2:oid, _3:int) {G}
     V10{rows=0:lng} := bat.new(:int,:oid);#  3 V10:bat[:int,:oid] := 
CMDBATnew(_3:int, _2:oid) {G}
-    V11{rows=0:lng} := bat.reverse(V10{rows=0:lng});#  4 V11:bat[:oid,:int] := 
BKCreverse(V10:bat[:int,:oid]) {G}
+    V11{rows=0} := bat.reverse(V10{rows=0:lng});#  4 V11:bat[:oid,:int] := 
BKCreverse(V10:bat[:int,:oid]) {G}
     V12 := V7;                          #  5 V12:bat[:oid,:int] := 
V7:bat[:oid,:int] {G}
     V16 := algebra.markT(V12);          #  6 V16:bat[:oid,:oid] := 
ALGtmark_default(V12:bat[:oid,:int]) {G}
     V17 := algebra.join(V16,V7);        #  7 V17:bat[:oid,:int] := 
ALGjoin(V16:bat[:oid,:oid], V7:bat[:oid,:int]) {G}
diff -r 76dd9fabceef -r c6b4b2d6fc5c 
MonetDB5/src/optimizer/Tests/rangePush01.stable.out
--- a/MonetDB5/src/optimizer/Tests/rangePush01.stable.out       Fri Aug 06 
11:27:43 2010 +0200
+++ b/MonetDB5/src/optimizer/Tests/rangePush01.stable.out       Fri Aug 06 
12:47:46 2010 +0200
@@ -29,12 +29,12 @@
 # detect empty ranges 
     b := bat.new(:void,:int);           #  2 b:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
     s1 := algebra.select(b,80,90);      #  3 s1:bat[:void,:int] := 
ALGselect(b:bat[:void,:int], _6:int, _7:int) {G}
-    s2{rows=0:lng} := bat.new(:void,:int);#  4 s2:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
+    s2{rows=0} := bat.new(:void,:int);  #  4 s2:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
     s3 := algebra.select(b,80,80);      #  5 s3:bat[:void,:int] := 
ALGselect(b:bat[:void,:int], _6:int, _6:int) {G}
     s4 := algebra.select(b,80,80,true,true);#  6 s4:bat[:void,:int] := 
ALGselectInclusive(b:bat[:void,:int], _6:int, _6:int, _11:bit, _11:bit) {G}
-    s5{rows=0:lng} := bat.new(:void,:int);#  7 s5:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
-    s6{rows=0:lng} := bat.new(:void,:int);#  8 s6:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
-    s7{rows=0:lng} := bat.new(:void,:int);#  9 s7:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
+    s5{rows=0} := bat.new(:void,:int);  #  7 s5:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
+    s6{rows=0} := bat.new(:void,:int);  #  8 s6:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
+    s7{rows=0} := bat.new(:void,:int);  #  9 s7:bat[:void,:int] := 
CMDBATnew(_3:void, _4:int) {G}
     mdb.List();                         # 10 _17:void := MDBlistDetail() 
 end main;                               # 11  
 
diff -r 76dd9fabceef -r c6b4b2d6fc5c 
MonetDB5/src/optimizer/Tests/tst4730.stable.out
--- a/MonetDB5/src/optimizer/Tests/tst4730.stable.out   Fri Aug 06 11:27:43 
2010 +0200
+++ b/MonetDB5/src/optimizer/Tests/tst4730.stable.out   Fri Aug 06 12:47:46 
2010 +0200
@@ -111,54 +111,54 @@
     V75:bat[:oid,:flt] {rows=1000:lng} := 
user.bind("sys","lineitem","l_discount",0);#  7 V75:bat[:oid,:flt] := 
user.bind(_8:str, _9:str, _22:str, _11:int) {G}
     V105:bat[:oid,:flt] {rows=1000:lng} := 
user.bind("sys","lineitem","l_tax",0);#  8 V105:bat[:oid,:flt] := 
user.bind(_8:str, _9:str, _24:str, _11:int) {G}
 barrier always := true;                 #  9 always:bit := _26:bit {J72}
-    V12{rows=1000:lng} := bat.reverse(V11{rows=1000:lng});# 10 
V12:bat[:oid,:oid] := BKCreverse(V11:bat[:oid,:oid]) {G}
-    V13{rows=1:lng} := 
algebra.kdifference(V6{rows=1000:lng},V12{rows=1000:lng});# 11 
V13:bat[:oid,:date] := ALGkdiff(V6:bat[:oid,:date], V12:bat[:oid,:oid]) {G}
+    V12{rows=1000} := bat.reverse(V11{rows=1000:lng});# 10 V12:bat[:oid,:oid] 
:= BKCreverse(V11:bat[:oid,:oid]) {G}
+    V13{rows=1} := algebra.kdifference(V6{rows=1000:lng},V12{rows=1000});# 11 
V13:bat[:oid,:date] := ALGkdiff(V6:bat[:oid,:date], V12:bat[:oid,:oid]) {G}
     V16 := mtime.date_sub_sec_interval(A3,A4);# 12 V16:date := 
MTIMEdate_sub_sec_interval_wrap(A3:date, A4:int) 
     a := mtime.date(nil);               # 13 a:date := MTIMEnil2date(_31:void) 
-    V17{rows=1:lng} := algebra.uselect(V13{rows=1:lng},a,V16);# 14 
V17:bat[:oid,:void] := ALGuselect(V13:bat[:oid,:date], a:date, V16:date) {G}
-    V20{rows=1:lng} := algebra.markT(V17{rows=1:lng},0...@0);# 15 
V20:bat[:oid,:oid] := ALGtmark(V17:bat[:oid,:void], _34:oid) {G}
-    V21{rows=1:lng} := bat.reverse(V20{rows=1:lng});# 16 V21:bat[:oid,:oid] := 
BKCreverse(V20:bat[:oid,:oid]) {G}
-    V26{rows=1:lng} := 
algebra.kdifference(V22{rows=1000:lng},V12{rows=1000:lng});# 17 
V26:bat[:oid,:bit] := ALGkdiff(V22:bat[:oid,:bit], V12:bat[:oid,:oid]) {G}
-    V27{rows=1:lng} := algebra.join(V21{rows=1:lng},V26{rows=1:lng});# 18 
V27:bat[:oid,:bit] := ALGjoin(V21:bat[:oid,:oid], V26:bat[:oid,:bit]) {G}
-    (h,V28) := group.new(V27{rows=1:lng});# 19 (h:bat[:oid,:wrd], 
V28:bat[:oid,:oid]) := GRPgroup(V27:bat[:oid,:bit]) {G}
-    V33{rows=1:lng} := 
algebra.kdifference(V29{rows=1000:lng},V12{rows=1000:lng});# 20 
V33:bat[:oid,:bit] := ALGkdiff(V29:bat[:oid,:bit], V12:bat[:oid,:oid]) {G}
-    V34{rows=1:lng} := algebra.join(V21{rows=1:lng},V33{rows=1:lng});# 21 
V34:bat[:oid,:bit] := ALGjoin(V21:bat[:oid,:oid], V33:bat[:oid,:bit]) {G}
-    (Ext,V35) := group.derive(h,V28,V34{rows=1:lng});# 22 (Ext:bat[:oid,:wrd], 
V35:bat[:oid,:oid]) := GRPderive(h:bat[:oid,:wrd], V28:bat[:oid,:oid], 
V34:bat[:oid,:bit]) {G}
+    V17{rows=1} := algebra.uselect(V13{rows=1},a,V16);# 14 V17:bat[:oid,:void] 
:= ALGuselect(V13:bat[:oid,:date], a:date, V16:date) {G}
+    V20{rows=1} := algebra.markT(V17{rows=1},0...@0);# 15 V20:bat[:oid,:oid] 
:= ALGtmark(V17:bat[:oid,:void], _34:oid) {G}
+    V21{rows=1} := bat.reverse(V20{rows=1});# 16 V21:bat[:oid,:oid] := 
BKCreverse(V20:bat[:oid,:oid]) {G}
+    V26{rows=1} := algebra.kdifference(V22{rows=1000:lng},V12{rows=1000});# 17 
V26:bat[:oid,:bit] := ALGkdiff(V22:bat[:oid,:bit], V12:bat[:oid,:oid]) {G}
+    V27{rows=1} := algebra.join(V21{rows=1},V26{rows=1});# 18 
V27:bat[:oid,:bit] := ALGjoin(V21:bat[:oid,:oid], V26:bat[:oid,:bit]) {G}
+    (h,V28) := group.new(V27{rows=1});  # 19 (h:bat[:oid,:wrd], 
V28:bat[:oid,:oid]) := GRPgroup(V27:bat[:oid,:bit]) {G}
+    V33{rows=1} := algebra.kdifference(V29{rows=1000:lng},V12{rows=1000});# 20 
V33:bat[:oid,:bit] := ALGkdiff(V29:bat[:oid,:bit], V12:bat[:oid,:oid]) {G}
+    V34{rows=1} := algebra.join(V21{rows=1},V33{rows=1});# 21 
V34:bat[:oid,:bit] := ALGjoin(V21:bat[:oid,:oid], V33:bat[:oid,:bit]) {G}
+    (Ext,V35) := group.derive(h,V28,V34{rows=1});# 22 (Ext:bat[:oid,:wrd], 
V35:bat[:oid,:oid]) := GRPderive(h:bat[:oid,:wrd], V28:bat[:oid,:oid], 
V34:bat[:oid,:bit]) {G}
     V36 := algebra.tunique(Ext);        # 23 V36:bat[:oid,:wrd] := 
ALGtunique(Ext:bat[:oid,:wrd]) {G}
     V37 := bat.mirror(V36);             # 24 V37:bat[:oid,:oid] := 
BKCmirror(V36:bat[:oid,:wrd]) {G}
-    V42 := algebra.join(V37,V27{rows=1:lng});# 25 V42:bat[:oid,:bit] := 
ALGjoin(V37:bat[:oid,:oid], V27:bat[:oid,:bit]) {G}
+    V42 := algebra.join(V37,V27{rows=1});# 25 V42:bat[:oid,:bit] := 
ALGjoin(V37:bat[:oid,:oid], V27:bat[:oid,:bit]) {G}
     V43 := algebra.sort(V42);           # 26 V43:bat[:oid,:bit] := 
ALGhsort(V42:bat[:oid,:bit]) {G}
-    V51 := algebra.join(V37,V34{rows=1:lng});# 27 V51:bat[:oid,:bit] := 
ALGjoin(V37:bat[:oid,:oid], V34:bat[:oid,:bit]) {G}
+    V51 := algebra.join(V37,V34{rows=1});# 27 V51:bat[:oid,:bit] := 
ALGjoin(V37:bat[:oid,:oid], V34:bat[:oid,:bit]) {G}
     V52 := group.refine(V43,V51);       # 28 V52:bat[:oid,:oid] := 
GRPrefine(V43:bat[:oid,:bit], V51:bat[:oid,:bit]) {G}
-    V57{rows=1:lng} := 
algebra.kdifference(V53{rows=1000:lng},V12{rows=1000:lng});# 29 
V57:bat[:oid,:int] := ALGkdiff(V53:bat[:oid,:int], V12:bat[:oid,:oid]) {G}
-    V58{rows=1:lng} := algebra.join(V21{rows=1:lng},V57{rows=1:lng});# 30 
V58:bat[:oid,:int] := ALGjoin(V21:bat[:oid,:oid], V57:bat[:oid,:int]) {G}
-    V59{rows=1:lng} := aggr.sum(V58{rows=1:lng},V35,V37);# 31 
V59:bat[:oid,:lng] := AX3aggrX3_sum3_int_lng(V58:bat[:oid,:int], 
V35:bat[:oid,:oid], V37:bat[:oid,:oid]) {G}
-    V64{rows=1:lng} := 
algebra.kdifference(V60{rows=1000:lng},V12{rows=1000:lng});# 32 
V64:bat[:oid,:flt] := ALGkdiff(V60:bat[:oid,:flt], V12:bat[:oid,:oid]) {G}
-    V65{rows=1:lng} := algebra.join(V21{rows=1:lng},V64{rows=1:lng});# 33 
V65:bat[:oid,:flt] := ALGjoin(V21:bat[:oid,:oid], V64:bat[:oid,:flt]) {G}
-    V66{rows=1:lng} := aggr.sum(V65{rows=1:lng},V35,V37);# 34 
V66:bat[:oid,:dbl] := AX3aggrX3_sum3_flt_dbl(V65:bat[:oid,:flt], 
V35:bat[:oid,:oid], V37:bat[:oid,:oid]) {G}
+    V57{rows=1} := algebra.kdifference(V53{rows=1000:lng},V12{rows=1000});# 29 
V57:bat[:oid,:int] := ALGkdiff(V53:bat[:oid,:int], V12:bat[:oid,:oid]) {G}
+    V58{rows=1} := algebra.join(V21{rows=1},V57{rows=1});# 30 
V58:bat[:oid,:int] := ALGjoin(V21:bat[:oid,:oid], V57:bat[:oid,:int]) {G}
+    V59{rows=1} := aggr.sum(V58{rows=1},V35,V37);# 31 V59:bat[:oid,:lng] := 
AX3aggrX3_sum3_int_lng(V58:bat[:oid,:int], V35:bat[:oid,:oid], 
V37:bat[:oid,:oid]) {G}
+    V64{rows=1} := algebra.kdifference(V60{rows=1000:lng},V12{rows=1000});# 32 
V64:bat[:oid,:flt] := ALGkdiff(V60:bat[:oid,:flt], V12:bat[:oid,:oid]) {G}
+    V65{rows=1} := algebra.join(V21{rows=1},V64{rows=1});# 33 
V65:bat[:oid,:flt] := ALGjoin(V21:bat[:oid,:oid], V64:bat[:oid,:flt]) {G}
+    V66{rows=1} := aggr.sum(V65{rows=1},V35,V37);# 34 V66:bat[:oid,:dbl] := 
AX3aggrX3_sum3_flt_dbl(V65:bat[:oid,:flt], V35:bat[:oid,:oid], 
V37:bat[:oid,:oid]) {G}
     V72 := calc.lng(A0);                # 35 V72:lng := CALCsht2lng(A0:sht) 
     V74 := calc.*(V72,100);             # 36 V74:lng := 
CALCbinaryMULlngint(V72:lng, _58:int) 
-    V82{rows=1:lng} := 
algebra.kdifference(V75{rows=1000:lng},V12{rows=1000:lng});# 37 
V82:bat[:oid,:flt] := ALGkdiff(V75:bat[:oid,:flt], V12:bat[:oid,:oid]) {G}
-    V83{rows=1:lng} := algebra.join(V21{rows=1:lng},V82{rows=1:lng});# 38 
V83:bat[:oid,:flt] := ALGjoin(V21:bat[:oid,:oid], V82:bat[:oid,:flt]) {G}
-    V84:bat[:oid,:flt]  := mal.multiplex("calc.-",V74,V83{rows=1:lng});# 39 
V84:bat[:oid,:flt] := OPTremapMultiplex(_62:str, V74:lng, V83:bat[:oid,:flt]) 
{G}
-    V86{rows=1:lng} := batcalc.*(V65{rows=1:lng},V84);# 40 V86:bat[:oid,:flt] 
:= CMDbatMUL_flt_flt_flt(V65:bat[:oid,:flt], V84:bat[:oid,:flt]) {G}
-    V88{rows=1:lng} := aggr.sum(V86{rows=1:lng},V35,V37);# 41 
V88:bat[:oid,:dbl] := AX3aggrX3_sum3_flt_dbl(V86:bat[:oid,:flt], 
V35:bat[:oid,:oid], V37:bat[:oid,:oid]) {G}
+    V82{rows=1} := algebra.kdifference(V75{rows=1000:lng},V12{rows=1000});# 37 
V82:bat[:oid,:flt] := ALGkdiff(V75:bat[:oid,:flt], V12:bat[:oid,:oid]) {G}
+    V83{rows=1} := algebra.join(V21{rows=1},V82{rows=1});# 38 
V83:bat[:oid,:flt] := ALGjoin(V21:bat[:oid,:oid], V82:bat[:oid,:flt]) {G}
+    V84:bat[:oid,:flt]  := mal.multiplex("calc.-",V74,V83{rows=1});# 39 
V84:bat[:oid,:flt] := OPTremapMultiplex(_62:str, V74:lng, V83:bat[:oid,:flt]) 
{G}
+    V86{rows=1} := batcalc.*(V65{rows=1},V84);# 40 V86:bat[:oid,:flt] := 
CMDbatMUL_flt_flt_flt(V65:bat[:oid,:flt], V84:bat[:oid,:flt]) {G}
+    V88{rows=1} := aggr.sum(V86{rows=1},V35,V37);# 41 V88:bat[:oid,:dbl] := 
AX3aggrX3_sum3_flt_dbl(V86:bat[:oid,:flt], V35:bat[:oid,:oid], 
V37:bat[:oid,:oid]) {G}
     V94 := calc.lng(A1);                # 42 V94:lng := CALCsht2lng(A1:sht) 
     V95 := calc.*(V94,100);             # 43 V95:lng := 
CALCbinaryMULlngint(V94:lng, _58:int) 
-    V100:bat[:oid,:flt]  := mal.multiplex("calc.-",V95,V83{rows=1:lng});# 44 
V100:bat[:oid,:flt] := OPTremapMultiplex(_62:str, V95:lng, V83:bat[:oid,:flt]) 
{G}
-    V101{rows=1:lng} := batcalc.*(V65{rows=1:lng},V100);# 45 
V101:bat[:oid,:flt] := CMDbatMUL_flt_flt_flt(V65:bat[:oid,:flt], 
V100:bat[:oid,:flt]) {G}
+    V100:bat[:oid,:flt]  := mal.multiplex("calc.-",V95,V83{rows=1});# 44 
V100:bat[:oid,:flt] := OPTremapMultiplex(_62:str, V95:lng, V83:bat[:oid,:flt]) 
{G}
+    V101{rows=1} := batcalc.*(V65{rows=1},V100);# 45 V101:bat[:oid,:flt] := 
CMDbatMUL_flt_flt_flt(V65:bat[:oid,:flt], V100:bat[:oid,:flt]) {G}
     V103 := calc.lng(A2);               # 46 V103:lng := CALCsht2lng(A2:sht) 
     V104 := calc.*(V103,100);           # 47 V104:lng := 
CALCbinaryMULlngint(V103:lng, _58:int) 
-    V109{rows=1:lng} := 
algebra.kdifference(V105{rows=1000:lng},V12{rows=1000:lng});# 48 
V109:bat[:oid,:flt] := ALGkdiff(V105:bat[:oid,:flt], V12:bat[:oid,:oid]) {G}
-    V110{rows=1:lng} := algebra.join(V21{rows=1:lng},V109{rows=1:lng});# 49 
V110:bat[:oid,:flt] := ALGjoin(V21:bat[:oid,:oid], V109:bat[:oid,:flt]) {G}
-    V111:bat[:oid,:flt]  := mal.multiplex("calc.+",V104,V110{rows=1:lng});# 50 
V111:bat[:oid,:flt] := OPTremapMultiplex(_74:str, V104:lng, 
V110:bat[:oid,:flt]) {G}
-    V113{rows=1:lng} := batcalc.*(V101{rows=1:lng},V111);# 51 
V113:bat[:oid,:flt] := CMDbatMUL_flt_flt_flt(V101:bat[:oid,:flt], 
V111:bat[:oid,:flt]) {G}
-    V114{rows=1:lng} := aggr.sum(V113{rows=1:lng},V35,V37);# 52 
V114:bat[:oid,:dbl] := AX3aggrX3_sum3_flt_dbl(V113:bat[:oid,:flt], 
V35:bat[:oid,:oid], V37:bat[:oid,:oid]) {G}
-    V122{rows=1:lng} := aggr.avg(V58{rows=1:lng},V35,V37);# 53 
V122:bat[:oid,:dbl] := AX3aggrX3_avg3_int(V58:bat[:oid,:int], 
V35:bat[:oid,:oid], V37:bat[:oid,:oid]) {G}
-    V127{rows=1:lng} := aggr.avg(V65{rows=1:lng},V35,V37);# 54 
V127:bat[:oid,:dbl] := AX3aggrX3_avg3_flt(V65:bat[:oid,:flt], 
V35:bat[:oid,:oid], V37:bat[:oid,:oid]) {G}
-    V129 := mal.multiplex("calc.round",V127{rows=1:lng},100);# 55 V129:any := 
OPTremapMultiplex(_80:str, V127:bat[:oid,:dbl], _58:int) {G}
-    V135{rows=1:lng} := aggr.avg(V83{rows=1:lng},V35,V37);# 56 
V135:bat[:oid,:dbl] := AX3aggrX3_avg3_flt(V83:bat[:oid,:flt], 
V35:bat[:oid,:oid], V37:bat[:oid,:oid]) {G}
-    V136 := mal.multiplex("calc.round",V135{rows=1:lng},100);# 57 V136:any := 
OPTremapMultiplex(_80:str, V135:bat[:oid,:dbl], _58:int) {G}
+    V109{rows=1} := algebra.kdifference(V105{rows=1000:lng},V12{rows=1000});# 
48 V109:bat[:oid,:flt] := ALGkdiff(V105:bat[:oid,:flt], V12:bat[:oid,:oid]) {G}
+    V110{rows=1} := algebra.join(V21{rows=1},V109{rows=1});# 49 
V110:bat[:oid,:flt] := ALGjoin(V21:bat[:oid,:oid], V109:bat[:oid,:flt]) {G}
+    V111:bat[:oid,:flt]  := mal.multiplex("calc.+",V104,V110{rows=1});# 50 
V111:bat[:oid,:flt] := OPTremapMultiplex(_74:str, V104:lng, 
V110:bat[:oid,:flt]) {G}
+    V113{rows=1} := batcalc.*(V101{rows=1},V111);# 51 V113:bat[:oid,:flt] := 
CMDbatMUL_flt_flt_flt(V101:bat[:oid,:flt], V111:bat[:oid,:flt]) {G}
+    V114{rows=1} := aggr.sum(V113{rows=1},V35,V37);# 52 V114:bat[:oid,:dbl] := 
AX3aggrX3_sum3_flt_dbl(V113:bat[:oid,:flt], V35:bat[:oid,:oid], 
V37:bat[:oid,:oid]) {G}
+    V122{rows=1} := aggr.avg(V58{rows=1},V35,V37);# 53 V122:bat[:oid,:dbl] := 
AX3aggrX3_avg3_int(V58:bat[:oid,:int], V35:bat[:oid,:oid], V37:bat[:oid,:oid]) 
{G}
+    V127{rows=1} := aggr.avg(V65{rows=1},V35,V37);# 54 V127:bat[:oid,:dbl] := 
AX3aggrX3_avg3_flt(V65:bat[:oid,:flt], V35:bat[:oid,:oid], V37:bat[:oid,:oid]) 
{G}
+    V129 := mal.multiplex("calc.round",V127{rows=1},100);# 55 V129:any := 
OPTremapMultiplex(_80:str, V127:bat[:oid,:dbl], _58:int) {G}
+    V135{rows=1} := aggr.avg(V83{rows=1},V35,V37);# 56 V135:bat[:oid,:dbl] := 
AX3aggrX3_avg3_flt(V83:bat[:oid,:flt], V35:bat[:oid,:oid], V37:bat[:oid,:oid]) 
{G}
+    V136 := mal.multiplex("calc.round",V135{rows=1},100);# 57 V136:any := 
OPTremapMultiplex(_80:str, V135:bat[:oid,:dbl], _58:int) {G}
     V137 := aggr.count(V35,V35,V37);    # 58 V137:bat[:oid,:wrd] := 
AX3aggrX3_count3Nils(V35:bat[:oid,:oid], V35:bat[:oid,:oid], 
V37:bat[:oid,:oid]) {G}
 #sql.column(V42,"l_returnflag","varchar",1,0); 
 #sql.column(V51,"l_linestatus","varchar",1,0); 
diff -r 76dd9fabceef -r c6b4b2d6fc5c MonetDB5/src/optimizer/opt_costModel.mx
--- a/MonetDB5/src/optimizer/opt_costModel.mx   Fri Aug 06 11:27:43 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_costModel.mx   Fri Aug 06 12:47:46 2010 +0200
@@ -90,24 +90,6 @@
 #include "mal_config.h"
 #include "opt_costModel.h"
 
-static lng 
-getVarRows(MalBlkPtr mb, int v)
-{
-       VarPtr p = varGetProp(mb, v, rowsProp);
-       
-       if (!p)
-               return -1;
-       if (p->value.vtype == TYPE_lng)
-               return p->value.val.lval;
-       if (p->value.vtype == TYPE_int)
-               return p->value.val.ival;
-       if (p->value.vtype == TYPE_sht)
-               return p->value.val.shval;
-       if (p->value.vtype == TYPE_bte)
-               return p->value.val.btval;
-       return -1;
-}
-
 @-
 The cost formula are repetative
 @= newRows
@@ -119,7 +101,7 @@
                if (c1 == -1 || c2 == -1) 
                        continue;
                k = (@3);
-               varSetProp(mb, getArg(p,@4), rowsProp, op_eq, 
VALset(&v,TYPE_lng,&k));
+               varSetProp(mb, getArg(p,@4), rowsProp, op_eq, 
VALset(&v,TYPE_wrd,&k));
                OPTDEBUGcostModel {
                        mnstr_printf(cntxt->fdout,"COST of @1 @2 into @4: " 
LLFMT "\n",k);
                        printInstruction(cntxt->fdout,mb,0,p,0);
@@ -135,7 +117,7 @@
 @c
 static void
 OPTbackpropagate(MalBlkPtr mb, int i, int idx){
-       lng rows;
+       wrd rows;
        InstrPtr p;
 
         rows = getVarRows(mb, idx);
@@ -145,7 +127,7 @@
                p = getInstrPtr(mb,i);
                if (getFunctionId(p) == setWriteModeRef){
                        if (getVarRows(mb, getArg(p,1)) == 0) {
-                               ValRecord v, *vp = VALset(&v, TYPE_lng, &rows);
+                               ValRecord v, *vp = VALset(&v, TYPE_wrd, &rows);
                                varSetProp(mb, getArg(p,1), rowsProp, op_eq, 
vp);
                        }
                } 
@@ -165,7 +147,7 @@
 OPTcostModelImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci)
 {
        int i, actions = 1;
-       lng k, c1, c2;
+       wrd k, c1, c2;
        InstrPtr p;
        str sortrevRef= putName("sortReverse",11);
        str sortrevTailRef= putName("sortReverseTail",15);
@@ -280,7 +262,7 @@
                        if (c1 != -1) {
                                ValRecord v;
                                
-                               varSetProp(mb, getArg(p,0), rowsProp, op_eq, 
VALset(&v, TYPE_lng, &c1));
+                               varSetProp(mb, getArg(p,0), rowsProp, op_eq, 
VALset(&v, TYPE_wrd, &c1));
                        }
                }
        }
diff -r 76dd9fabceef -r c6b4b2d6fc5c MonetDB5/src/optimizer/opt_emptySet.mx
--- a/MonetDB5/src/optimizer/opt_emptySet.mx    Fri Aug 06 11:27:43 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_emptySet.mx    Fri Aug 06 12:47:46 2010 +0200
@@ -316,9 +316,7 @@
        (void) stk;
        (void) p;
        for (i = 0; i < mb->vtop; i++) {
-               VarPtr rowsp;
-               if ((rowsp = varGetProp(mb, i, rowsProp)) != NULL 
-                    && rowsp->value.val.lval == 0) {
+               if (getVarRows(mb, i) == 0) {
                        OPTDEBUGemptySet
                                mnstr_printf(cntxt->fdout, "#START emptyset 
optimizer %d", i);
                        empty[i] = 1;
diff -r 76dd9fabceef -r c6b4b2d6fc5c MonetDB5/src/optimizer/opt_mergetable.mx
--- a/MonetDB5/src/optimizer/opt_mergetable.mx  Fri Aug 06 11:27:43 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_mergetable.mx  Fri Aug 06 12:47:46 2010 +0200
@@ -1754,12 +1754,12 @@
 Disabled as a slice is used also for offset where we need the oposite
 of the slice part. y= x.slice(). x.diff(y);
 @c
-               if (0 && match > 0 && getModuleId(p) == algebraRef &&
+               if (match > 0 && getModuleId(p) == algebraRef &&
                                getFunctionId(p) == sliceRef &&
                                (m = isMATalias(getArg(p, 1), mat, mtop)) >= 0)
                {
                        /* inject new mat.pack() operation */
-                       MATpackAll2(mb, NULL, mat, m, &mtop);
+                       MATpackAll(mb, NULL, mat, m, &mtop);
                        q = getInstrPtr(mb, mb->stop - 1);
                        /* rename mat.pack() to mat.slice() */
                        setFunctionId(q, sliceRef);
diff -r 76dd9fabceef -r c6b4b2d6fc5c MonetDB5/src/optimizer/opt_mitosis.mx
--- a/MonetDB5/src/optimizer/opt_mitosis.mx     Fri Aug 06 11:27:43 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_mitosis.mx     Fri Aug 06 12:47:46 2010 +0200
@@ -68,7 +68,7 @@
 #include "opt_octopus.h"
 #include "mal_interpreter.h"
 
-#define PARTITION_THRESHOLD (BUN) GDKnr_threads        /* should be increased 
in production version */
+#define PARTITION_THRESHOLD (wrd) GDKnr_threads        /* should be increased 
in production version */
 
 static int eligible(MalBlkPtr mb )
 {
@@ -93,9 +93,8 @@
        str schema=0, table=0;
        VarRecord low,hgh;
        oid slice;
-       BUN r=0,rowcnt=0;       /* table should be sizeable to consider 
parallel execution*/
+       wrd r = 0, rowcnt=0;    /* table should be sizeable to consider 
parallel execution*/
        InstrPtr q,*old, target= 0, matq;
-       VarPtr v;
        size_t typewidth= 3 *sizeof(lng); /* 2 arguments and a result */
 
        (void)cntxt;
@@ -118,20 +117,14 @@
 base table and passes them on as a row property.
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to