Update of /cvsroot/monetdb/MonetDB5/src/optimizer/Tests
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13193/src/optimizer/Tests

Modified Files:
        CMexample.stable.out ESexample.stable.out 
        emptyset01.stable.out partitions01.stable.out 
        partitions02.stable.out partitions03.stable.out 
        partitions04.stable.out partitions05.stable.out 
        partitions06.stable.out partitions07.stable.out 
        tst4730.stable.out 
Log Message:
implemented a new property scheme


Index: tst4730.stable.out
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/optimizer/Tests/tst4730.stable.out,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- tst4730.stable.out  19 May 2007 06:07:43 -0000      1.39
+++ tst4730.stable.out  9 Dec 2007 16:21:18 -0000       1.40
@@ -107,21 +107,21 @@
 #exit always;
 #end qry1;
 factory user.qry1(A0:sht,A1:sht,A2:sht,A3:date,A4:int):bit;    # 0  
(qry1:bit)<-(A0:sht)(A1:sht)(A2:sht)(A3:date)(A4:int)
-    V6:bat[:oid,:date]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_shipdate",0);  # 1  
(V6:bat[:oid,:date])<-(_7:str)(_8:str)(_9:str)(_10:int)
-    V11:bat[:oid,:oid]{rows=1000:lng}  := user.bind_dbat("sys","lineitem",0);  
# 2  (V11:bat[:oid,:oid])<-(_7:str)(_8:str)(_10:int)
-    V22:bat[:oid,:bit]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_returnflag",0);        # 3  
(V22:bat[:oid,:bit])<-(_7:str)(_8:str)(_13:str)(_10:int)
-    V29:bat[:oid,:bit]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_linestatus",0);        # 4  
(V29:bat[:oid,:bit])<-(_7:str)(_8:str)(_15:str)(_10:int)
-    V53:bat[:oid,:int]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_quantity",0);  # 5  
(V53:bat[:oid,:int])<-(_7:str)(_8:str)(_17:str)(_10:int)
-    V60:bat[:oid,:flt]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_extendedprice",0);     # 6  
(V60:bat[:oid,:flt])<-(_7:str)(_8:str)(_19:str)(_10:int)
-    V75:bat[:oid,:flt]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_discount",0);  # 7  
(V75:bat[:oid,:flt])<-(_7:str)(_8:str)(_21:str)(_10:int)
-    V105:bat[:oid,:flt]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_tax",0);      # 8  
(V105:bat[:oid,:flt])<-(_7:str)(_8:str)(_23:str)(_10:int)
-barrier always := true;        # 9  (always:bit)<-(_25:bit) jump 72
+    V6:bat[:oid,:date]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_shipdate",0);  # 1  
(V6:bat[:oid,:date])<-(_8:str)(_9:str)(_10:str)(_11:int)
+    V11:bat[:oid,:oid]{rows=1000:lng}  := user.bind_dbat("sys","lineitem",0);  
# 2  (V11:bat[:oid,:oid])<-(_8:str)(_9:str)(_11:int)
+    V22:bat[:oid,:bit]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_returnflag",0);        # 3  
(V22:bat[:oid,:bit])<-(_8:str)(_9:str)(_14:str)(_11:int)
+    V29:bat[:oid,:bit]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_linestatus",0);        # 4  
(V29:bat[:oid,:bit])<-(_8:str)(_9:str)(_16:str)(_11:int)
+    V53:bat[:oid,:int]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_quantity",0);  # 5  
(V53:bat[:oid,:int])<-(_8:str)(_9:str)(_18:str)(_11:int)
+    V60:bat[:oid,:flt]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_extendedprice",0);     # 6  
(V60:bat[:oid,:flt])<-(_8:str)(_9:str)(_20:str)(_11:int)
+    V75:bat[:oid,:flt]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_discount",0);  # 7  
(V75:bat[:oid,:flt])<-(_8:str)(_9:str)(_22:str)(_11:int)
+    V105:bat[:oid,:flt]{rows=1000:lng}  := 
user.bind("sys","lineitem","l_tax",0);      # 8  
(V105:bat[:oid,:flt])<-(_8:str)(_9:str)(_24:str)(_11:int)
+barrier always := true;        # 9  (always:bit)<-(_26:bit) jump 72
     V12 := bat.reverse(V11);   # 10 BKCreverse 
(V12:bat[:oid,:oid])<-(V11:bat[:oid,:oid])
     V13 := algebra.kdifference(V6,V12);        # 11 ALGkdiff 
(V13:bat[:oid,:date])<-(V6:bat[:oid,:date])(V12:bat[:oid,:oid])
     V16 := mtime.date_sub_sec_interval(A3,A4); # 12 
MTIMEdate_sub_sec_interval_wrap (V16:date)<-(A3:date)(A4:int)
-    a := mtime.date(nil:void); # 13 MTIMEnil2date (a:date)<-(_30:void)
+    a := mtime.date(nil:void); # 13 MTIMEnil2date (a:date)<-(_31:void)
     V17 := algebra.uselect(V13,a,V16); # 14 ALGuselect 
(V17:bat[:oid,:oid])<-(V13:bat[:oid,:date])(a:date)(V16:date)
-    V20 := algebra.markT(V17,[EMAIL PROTECTED]);       # 15 ALGtmark 
(V20:bat[:oid,:oid])<-(V17:bat[:oid,:oid])(_33:oid)
+    V20 := algebra.markT(V17,[EMAIL PROTECTED]);       # 15 ALGtmark 
(V20:bat[:oid,:oid])<-(V17:bat[:oid,:oid])(_34:oid)
     V21 := bat.reverse(V20);   # 16 BKCreverse 
(V21:bat[:oid,:oid])<-(V20:bat[:oid,:oid])
     V26 := algebra.kdifference(V22,V12);       # 17 ALGkdiff 
(V26:bat[:oid,:bit])<-(V22:bat[:oid,:bit])(V12:bat[:oid,:oid])
     V27 := algebra.join(V21,V26);      # 18 ALGjoin 
(V27:bat[:oid,:bit])<-(V21:bat[:oid,:oid])(V26:bat[:oid,:bit])
@@ -142,28 +142,28 @@
     V65 := algebra.join(V21,V64);      # 33 ALGjoin 
(V65:bat[:oid,:flt])<-(V21:bat[:oid,:oid])(V64:bat[:oid,:flt])
     V66 := aggr.sum(V65,V35,V37);      # 34 AX3aggrX3_sum3_flt_dbl 
(V66:bat[:oid,:dbl])<-(V65:bat[:oid,:flt])(V35:bat[:oid,:oid])(V37:bat[:oid,:oid])
     V72 := calc.lng(A0);       # 35 CALCsht2lng (V72:lng)<-(A0:sht)
-    V74 := calc.*(V72,100);    # 36 CALCbinaryMULlngint 
(V74:lng)<-(V72:lng)(_57:int)
+    V74 := calc.*(V72,100);    # 36 CALCbinaryMULlngint 
(V74:lng)<-(V72:lng)(_58:int)
     V82 := algebra.kdifference(V75,V12);       # 37 ALGkdiff 
(V82:bat[:oid,:flt])<-(V75:bat[:oid,:flt])(V12:bat[:oid,:oid])
     V83 := algebra.join(V21,V82);      # 38 ALGjoin 
(V83:bat[:oid,:flt])<-(V21:bat[:oid,:oid])(V82:bat[:oid,:flt])
-    V84:bat[:oid,:flt]  := mal.multiplex("calc.-",V74,V83);    # 39 
OPTremapMultiplex (V84:bat[:oid,:flt])<-(_61:str)(V74:lng)(V83:bat[:oid,:flt])
+    V84:bat[:oid,:flt]  := mal.multiplex("calc.-",V74,V83);    # 39 
OPTremapMultiplex (V84:bat[:oid,:flt])<-(_62:str)(V74:lng)(V83:bat[:oid,:flt])
     V86 := batcalc.*(V65,V84); # 40 CMDbatMUL_flt_flt_flt 
(V86:bat[:oid,:flt])<-(V65:bat[:oid,:flt])(V84:bat[:oid,:flt])
     V88 := aggr.sum(V86,V35,V37);      # 41 AX3aggrX3_sum3_flt_dbl 
(V88:bat[:oid,:dbl])<-(V86:bat[:oid,:flt])(V35:bat[:oid,:oid])(V37:bat[:oid,:oid])
     V94 := calc.lng(A1);       # 42 CALCsht2lng (V94:lng)<-(A1:sht)
-    V95 := calc.*(V94,100);    # 43 CALCbinaryMULlngint 
(V95:lng)<-(V94:lng)(_57:int)
-    V100:bat[:oid,:flt]  := mal.multiplex("calc.-",V95,V83);   # 44 
OPTremapMultiplex (V100:bat[:oid,:flt])<-(_61:str)(V95:lng)(V83:bat[:oid,:flt])
+    V95 := calc.*(V94,100);    # 43 CALCbinaryMULlngint 
(V95:lng)<-(V94:lng)(_58:int)
+    V100:bat[:oid,:flt]  := mal.multiplex("calc.-",V95,V83);   # 44 
OPTremapMultiplex (V100:bat[:oid,:flt])<-(_62:str)(V95:lng)(V83:bat[:oid,:flt])
     V101 := batcalc.*(V65,V100);       # 45 CMDbatMUL_flt_flt_flt 
(V101:bat[:oid,:flt])<-(V65:bat[:oid,:flt])(V100:bat[:oid,:flt])
     V103 := calc.lng(A2);      # 46 CALCsht2lng (V103:lng)<-(A2:sht)
-    V104 := calc.*(V103,100);  # 47 CALCbinaryMULlngint 
(V104:lng)<-(V103:lng)(_57:int)
+    V104 := calc.*(V103,100);  # 47 CALCbinaryMULlngint 
(V104:lng)<-(V103:lng)(_58:int)
     V109 := algebra.kdifference(V105,V12);     # 48 ALGkdiff 
(V109:bat[:oid,:flt])<-(V105:bat[:oid,:flt])(V12:bat[:oid,:oid])
     V110 := algebra.join(V21,V109);    # 49 ALGjoin 
(V110:bat[:oid,:flt])<-(V21:bat[:oid,:oid])(V109:bat[:oid,:flt])
-    V111:bat[:oid,:flt]  := mal.multiplex("calc.+",V104,V110); # 50 
OPTremapMultiplex 
(V111:bat[:oid,:flt])<-(_73:str)(V104:lng)(V110:bat[:oid,:flt])
+    V111:bat[:oid,:flt]  := mal.multiplex("calc.+",V104,V110); # 50 
OPTremapMultiplex 
(V111:bat[:oid,:flt])<-(_74:str)(V104:lng)(V110:bat[:oid,:flt])
     V113 := batcalc.*(V101,V111);      # 51 CMDbatMUL_flt_flt_flt 
(V113:bat[:oid,:flt])<-(V101:bat[:oid,:flt])(V111:bat[:oid,:flt])
     V114 := aggr.sum(V113,V35,V37);    # 52 AX3aggrX3_sum3_flt_dbl 
(V114:bat[:oid,:dbl])<-(V113:bat[:oid,:flt])(V35:bat[:oid,:oid])(V37:bat[:oid,:oid])
     V122 := aggr.avg(V58,V35,V37);     # 53 AX3aggrX3_avg3_int 
(V122:bat[:oid,:dbl])<-(V58:bat[:oid,:int])(V35:bat[:oid,:oid])(V37:bat[:oid,:oid])
     V127 := aggr.avg(V65,V35,V37);     # 54 AX3aggrX3_avg3_flt 
(V127:bat[:oid,:dbl])<-(V65:bat[:oid,:flt])(V35:bat[:oid,:oid])(V37:bat[:oid,:oid])
-    V129 := mal.multiplex("calc.round",V127,100);      # 55 OPTremapMultiplex 
(V129:any)<-(_79:str)(V127:bat[:oid,:dbl])(_57:int)
+    V129 := mal.multiplex("calc.round",V127,100);      # 55 OPTremapMultiplex 
(V129:any)<-(_80:str)(V127:bat[:oid,:dbl])(_58:int)
     V135 := aggr.avg(V83,V35,V37);     # 56 AX3aggrX3_avg3_flt 
(V135:bat[:oid,:dbl])<-(V83:bat[:oid,:flt])(V35:bat[:oid,:oid])(V37:bat[:oid,:oid])
-    V136 := mal.multiplex("calc.round",V135,100);      # 57 OPTremapMultiplex 
(V136:any)<-(_79:str)(V135:bat[:oid,:dbl])(_57:int)
+    V136 := mal.multiplex("calc.round",V135,100);      # 57 OPTremapMultiplex 
(V136:any)<-(_80:str)(V135:bat[:oid,:dbl])(_58:int)
     V137 := aggr.count(V35,V35,V37);   # 58 AX3aggrX3_count3Nils 
(V137:bat[:oid,:int])<-(V35:bat[:oid,:oid])(V35:bat[:oid,:oid])(V37:bat[:oid,:oid])
 #sql.column(V42,"l_returnflag","varchar",1,0);         # 59  (_83:str)
 #sql.column(V51,"l_linestatus","varchar",1,0);         # 60  (_84:str)

Index: emptyset01.stable.out
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/optimizer/Tests/emptyset01.stable.out,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- emptyset01.stable.out       19 May 2007 06:07:43 -0000      1.2
+++ emptyset01.stable.out       9 Dec 2007 16:21:16 -0000       1.3
@@ -48,9 +48,9 @@
     V12 := algebra.kdifference(V7,V11);        # 5 ALGkdiff 
(V12:bat[:oid,:int])<-(V7:bat[:oid,:int])(V11:bat[:oid,:int])
     V16 := algebra.markT(V12); # 6 ALGtmark_default 
(V16:bat[:oid,:oid])<-(V12:bat[:oid,:int])
     V17 := algebra.join(V16,V7);       # 7 ALGjoin 
(V17:bat[:oid,:int])<-(V16:bat[:oid,:oid])(V7:bat[:oid,:int])
-    bat.append(V1,V17);        # 8 BKCappend_wrap 
(_10:void)<-(V1:bat[:oid,:int])(V17:bat[:oid,:int])
-    user.do(V1);       # 9  (_11:void)<-(V1:bat[:oid,:int])
-    io.print("done");  # 10 IOprint_val (_12:void)<-(_13:str)
+    bat.append(V1,V17);        # 8 BKCappend_wrap 
(_11:void)<-(V1:bat[:oid,:int])(V17:bat[:oid,:int])
+    user.do(V1);       # 9  (_12:void)<-(V1:bat[:oid,:int])
+    io.print("done");  # 10 IOprint_val (_13:void)<-(_14:str)
 end tst;       # 11  
 #    optimizer.inline("user","tst");
 #    optimizer.costModel("user","tst");
@@ -69,15 +69,15 @@
     V12 := V7; # 5  (V12:bat[:oid,:int])<-(V7:bat[:oid,:int])
     V16 := algebra.markT(V12); # 6 ALGtmark_default 
(V16:bat[:oid,:oid])<-(V12:bat[:oid,:int])
     V17 := algebra.join(V16,V7);       # 7 ALGjoin 
(V17:bat[:oid,:int])<-(V16:bat[:oid,:oid])(V7:bat[:oid,:int])
-    bat.append(V1,V17);        # 8 BKCappend_wrap 
(_10:void)<-(V1:bat[:oid,:int])(V17:bat[:oid,:int])
-    nil:void;  # 9  (_11:void)<-(_23:void)
-barrier (_16,_17,_18):= bat.newIterator(V1);   # 10 CHPbunIterator 
(_16:lng)(_17:oid)(_18:int)<-(V1:bat[:oid,:int]) jump 15
-    io.print("loop");  # 11 IOprint_val (_19:void)<-(_20:str)
+    bat.append(V1,V17);        # 8 BKCappend_wrap 
(_11:void)<-(V1:bat[:oid,:int])(V17:bat[:oid,:int])
+    nil:void;  # 9  (_12:void)<-(_24:void)
+barrier (_17,_18,_19):= bat.newIterator(V1);   # 10 CHPbunIterator 
(_17:lng)(_18:oid)(_19:int)<-(V1:bat[:oid,:int]) jump 15
+    io.print("loop");  # 11 IOprint_val (_20:void)<-(_21:str)
 catch MALException:str ;       # 12  (MALException:str) jump 14
-    io.print(MALException);    # 13 IOprint_val (_22:void)<-(MALException:str)
+    io.print(MALException);    # 13 IOprint_val (_23:void)<-(MALException:str)
 exit MALException:str ;        # 14  (MALException:str)
-exit (_16,_17,_18);    # 15  (_16:lng)(_17:oid)(_18:int)
-    io.print("done");  # 16 IOprint_val (_12:void)<-(_13:str)
+exit (_17,_18,_19);    # 15  (_17:lng)(_18:oid)(_19:int)
+    io.print("done");  # 16 IOprint_val (_13:void)<-(_14:str)
 end tst;       # 17  
 
 # 08:05:29 >  

Index: partitions06.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions06.stable.out,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- partitions06.stable.out     19 Aug 2007 21:02:19 -0000      1.3
+++ partitions06.stable.out     9 Dec 2007 16:21:17 -0000       1.4
@@ -47,23 +47,23 @@
 #    sql.exportResult(x21,"");
 #end query;
 function sql.query(A0:sht):void;       # 0  (query:void)<-(A0:sht)
-    x1:bat[:oid,:int]{bid=769,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","i",0);   # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_6:int)
-    x10:bat[:oid,:int]{bid=765,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",1);  # 2 MDBdummy 
(x10:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_8:int)
-    constraints.emptySet(x10); # 3 CemptySet (_9:void)<-(x10:bat[:oid,:int])
-    x12:bat[:oid,:int]{bid=771,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",2);  # 4 MDBdummy 
(x12:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_11:int)
-    constraints.emptySet(x12); # 5 CemptySet (_12:void)<-(x12:bat[:oid,:int])
-    x17:bat[:oid,:int]{bid=772,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","j",1);  # 6 MDBdummy 
(x17:bat[:oid,:int])<-(_3:str)(_4:str)(_14:str)(_8:int)
-    x7{rows=1:lng} := algebra.uselect(x1,nil:int,2,false,false);       # 7 
ALGuselectInclusive 
(x7:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_16:int)(_11:int)(_17:bit)(_17:bit)
-    x14{rows=1:lng} := algebra.markT(x7,[EMAIL PROTECTED]);    # 8 ALGtmark 
(x14:bat[:oid,:oid])<-(x7:bat[:oid,:oid])(_19:oid)
+    x1:bat[:oid,:int]{notnil=true,rows=1:lng,bid=769}  := 
sql.bind("sys","t","i",0);   # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_9:int)
+    x10:bat[:oid,:int]{notnil=true,rows=0:lng,bid=765}  := 
sql.bind("sys","t","i",1);  # 2 MDBdummy 
(x10:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_13:int)
+    constraints.emptySet(x10); # 3 CemptySet (_14:void)<-(x10:bat[:oid,:int])
+    x12:bat[:oid,:int]{notnil=true,rows=0:lng,bid=771}  := 
sql.bind("sys","t","i",2);  # 4 MDBdummy 
(x12:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_17:int)
+    constraints.emptySet(x12); # 5 CemptySet (_18:void)<-(x12:bat[:oid,:int])
+    x17:bat[:oid,:int]{notnil=true,rows=1:lng,bid=772}  := 
sql.bind("sys","t","j",1);  # 6 MDBdummy 
(x17:bat[:oid,:int])<-(_6:str)(_7:str)(_21:str)(_13:int)
+    x7{rows=1:lng} := algebra.uselect(x1,nil:int,2,false,false);       # 7 
ALGuselectInclusive 
(x7:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_23:int)(_17:int)(_24:bit)(_24:bit)
+    x14{rows=1:lng} := algebra.markT(x7,[EMAIL PROTECTED]);    # 8 ALGtmark 
(x14:bat[:oid,:oid])<-(x7:bat[:oid,:oid])(_26:oid)
     x15{rows=1:lng} := bat.reverse(x14);       # 9 BKCreverse 
(x15:bat[:oid,:oid])<-(x14:bat[:oid,:oid])
     x16{rows=1:lng} := algebra.join(x15,x1);   # 10 ALGjoin 
(x16:bat[:oid,:int])<-(x15:bat[:oid,:oid])(x1:bat[:oid,:int])
     x19{rows=1:lng} := algebra.join(x15,x17);  # 11 ALGjoin 
(x19:bat[:oid,:int])<-(x15:bat[:oid,:oid])(x17:bat[:oid,:int])
     x33 := algebra.reuse(x19); # 12 ALGreuse 
(x33:bat[:oid,:int])<-(x19:bat[:oid,:int])
     x20:bat[:oid,:int]{rows=1:lng}  := batcalc.+(x33,x16,x19); # 13 
CMDbataccumADD_int_int_int 
(x20:bat[:oid,:int])<-(x33:bat[:oid,:int])(x16:bat[:oid,:int])(x19:bat[:oid,:int])
     x20:bat[:oid,:int]{rows=1:lng}  := batcalc.+(x20,x20,x16); # 14 
CMDbataccumADD_int_int_int 
(x20:bat[:oid,:int])<-(x20:bat[:oid,:int])(x20:bat[:oid,:int])(x16:bat[:oid,:int])
-    x21 := sql.resultSet(1,1,x20);     # 15 MDBdummy 
(x21:void)<-(_8:int)(_8:int)(x20:bat[:oid,:int])
-    sql.rsColumn(x21,"sys.","sqlxaddxsqlxaddxi","int",32,0,x20);       # 16 
MDBdummy 
(_26:void)<-(x21:void)(_27:str)(_28:str)(_29:str)(_30:int)(_6:int)(x20:bat[:oid,:int])
-    sql.exportResult(x21,"");  # 17 MDBdummy (_31:void)<-(x21:void)(_32:str)
+    x21 := sql.resultSet(1,1,x20);     # 15 MDBdummy 
(x21:void)<-(_13:int)(_13:int)(x20:bat[:oid,:int])
+    sql.rsColumn(x21,"sys.","sqlxaddxsqlxaddxi","int",32,0,x20);       # 16 
MDBdummy 
(_33:void)<-(x21:void)(_34:str)(_35:str)(_36:str)(_37:int)(_9:int)(x20:bat[:oid,:int])
+    sql.exportResult(x21,"");  # 17 MDBdummy (_38:void)<-(x21:void)(_39:str)
 end query;     # 18  
 #optimizer.partitions("sql","query");
 #mdb.list("sql","query");
@@ -76,47 +76,47 @@
     mdb.list("sql","query");   # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
 end main;      # 6  
 function sql.query(A0:sht):void;
-    x1:bat[:oid,:int]{bid=769,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","i",0);
-    x10:bat[:oid,:int]{bid=765,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",1);
-    bpm7:bat[:oid,:int]  := bpm.unfold(x10);
-    bpm.emptySet(bpm7);
-    x12:bat[:oid,:int]{bid=771,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",2);
-    bpm10:bat[:oid,:int]  := bpm.unfold(x12);
+    x1:bat[:oid,:int]{notnil=true,rows=1:lng,bid=769}  := 
sql.bind("sys","t","i",0);
+    x10:bat[:oid,:int]{notnil=true,rows=0:lng,bid=765}  := 
sql.bind("sys","t","i",1);
+    bpm10:bat[:oid,:int]  := bpm.unfold(x10);
     bpm.emptySet(bpm10);
-    x17:bat[:oid,:int]{bid=772,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","j",1);
-    bpm13:bat[:oid,:int]  := bpm.unfold(x17);
+    x12:bat[:oid,:int]{notnil=true,rows=0:lng,bid=771}  := 
sql.bind("sys","t","i",2);
+    bpm15:bat[:oid,:int]  := bpm.unfold(x12);
+    bpm.emptySet(bpm15);
+    x17:bat[:oid,:int]{notnil=true,rows=1:lng,bid=772}  := 
sql.bind("sys","t","j",1);
+    bpm19:bat[:oid,:int]  := bpm.unfold(x17);
     x7{rows=1:lng} := algebra.uselect(x1,nil:int,2,false,false);
     x14{rows=1:lng} := algebra.markT(x7,[EMAIL PROTECTED]);
     x15{rows=1:lng} := bat.reverse(x14);
     x16{rows=1:lng} := algebra.join(x15,x1);
-    _39 := bpm.new(:oid,:int);
-barrier x17:bat[:oid,:int]{bid=772,rows=1:lng,notnil=true}  := 
bpm.newIterator(bpm13);
+    _46 := bpm.new(:oid,:int);
+barrier x17:bat[:oid,:int]{notnil=true,rows=1:lng,bid=772}  := 
bpm.newIterator(bpm19);
     x19{rows=1:lng} := algebra.join(x15,x17);
-    bpm.addPartition(_39,x19);
-    redo x17:bat[:oid,:int]{bid=772,rows=1:lng,notnil=true}  := 
bpm.hasMoreElements(bpm13);
-exit x17:bat[:oid,:int]{bid=772,rows=1:lng,notnil=true} ;
-    _45 := bpm.new(:oid,:int);
-barrier x19{rows=1:lng} := bpm.newIterator(_39);
+    bpm.addPartition(_46,x19);
+    redo x17:bat[:oid,:int]{notnil=true,rows=1:lng,bid=772}  := 
bpm.hasMoreElements(bpm19);
+exit x17:bat[:oid,:int]{notnil=true,rows=1:lng,bid=772} ;
+    _52 := bpm.new(:oid,:int);
+barrier x19{rows=1:lng} := bpm.newIterator(_46);
     x33 := algebra.reuse(x19);
-    bpm.addPartition(_45,x33);
-    redo x19{rows=1:lng} := bpm.hasMoreElements(_39);
+    bpm.addPartition(_52,x33);
+    redo x19{rows=1:lng} := bpm.hasMoreElements(_46);
 exit x19{rows=1:lng};
-    x33 := bpm.fold(_45);
-    x19{rows=1:lng} := bpm.fold(_39);
+    x33 := bpm.fold(_52);
+    x19{rows=1:lng} := bpm.fold(_46);
     x20:bat[:oid,:int]{rows=1:lng}  := batcalc.+(x33,x16,x19);
     x20:bat[:oid,:int]{rows=1:lng}  := batcalc.+(x20,x20,x16);
     x21 := sql.resultSet(1,1,x20);
     sql.rsColumn(x21,"sys.","sqlxaddxsqlxaddxi","int",32,0,x20);
     sql.exportResult(x21,"");
 catch SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
-    bpm.garbage(bpm13);
+    bpm.garbage(bpm15);
+    bpm.garbage(bpm19);
     raise SQLexception;
 exit SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
-    bpm.garbage(bpm13);
+    bpm.garbage(bpm15);
+    bpm.garbage(bpm19);
 end query;
 
 # 09:41:13 >  

Index: partitions01.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions01.stable.out,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- partitions01.stable.out     19 Aug 2007 21:02:18 -0000      1.7
+++ partitions01.stable.out     9 Dec 2007 16:21:16 -0000       1.8
@@ -41,20 +41,20 @@
 #    sql.exportResult(x22,"");
 #end query;
 function sql.query(A0:sht):void;       # 0  (query:void)<-(A0:sht)
-    x1:bat[:oid,:int]{notnil=true,rows=1,bid=812}  := 
sql.bind("sys","x","i",0);       # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_6:int)
-    x6:bat[:oid,:int]{notnil=true,rows=0,bid=808}  := 
sql.bind("sys","x","i",1);       # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_8:int)
-    constraints.emptySet(x6);  # 3 CemptySet (_9:void)<-(x6:bat[:oid,:int])
-    x9:bat[:oid,:int]{notnil=true,rows=0,bid=814}  := 
sql.bind("sys","x","i",2);       # 4 MDBdummy 
(x9:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_11:int)
-    constraints.emptySet(x9);  # 5 CemptySet (_12:void)<-(x9:bat[:oid,:int])
-    x21:bat[:oid,:int]{notnil=true,rows=1,bid=815}  := 
sql.bind("sys","x","j",1);      # 6 MDBdummy 
(x21:bat[:oid,:int])<-(_3:str)(_4:str)(_14:str)(_8:int)
-    x18{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);        # 7 ALGtmark 
(x18:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_16:oid)
+    x1:bat[:oid,:int]{bid=812,rows=1,notnil=true}  := 
sql.bind("sys","x","i",0);       # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_9:int)
+    x6:bat[:oid,:int]{bid=808,rows=0,notnil=true}  := 
sql.bind("sys","x","i",1);       # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_4:int)
+    constraints.emptySet(x6);  # 3 CemptySet (_12:void)<-(x6:bat[:oid,:int])
+    x9:bat[:oid,:int]{bid=814,rows=0,notnil=true}  := 
sql.bind("sys","x","i",2);       # 4 MDBdummy 
(x9:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_15:int)
+    constraints.emptySet(x9);  # 5 CemptySet (_16:void)<-(x9:bat[:oid,:int])
+    x21:bat[:oid,:int]{bid=815,rows=1,notnil=true}  := 
sql.bind("sys","x","j",1);      # 6 MDBdummy 
(x21:bat[:oid,:int])<-(_6:str)(_7:str)(_19:str)(_4:int)
+    x18{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);        # 7 ALGtmark 
(x18:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_21:oid)
     x19{rows=1} := bat.reverse(x18);   # 8 BKCreverse 
(x19:bat[:oid,:oid])<-(x18:bat[:oid,:oid])
     x20{rows=1} := algebra.join(x19,x1);       # 9 ALGjoin 
(x20:bat[:oid,:int])<-(x19:bat[:oid,:oid])(x1:bat[:oid,:int])
     x28{rows=1} := algebra.join(x19,x21);      # 10 ALGjoin 
(x28:bat[:oid,:int])<-(x19:bat[:oid,:oid])(x21:bat[:oid,:int])
-    x29 := sql.resultSet(2,1,x20);     # 11 MDBdummy 
(x29:void)<-(_11:int)(_8:int)(x20:bat[:oid,:int])
-    sql.rsColumn(x29,"sys.x","i","int",32,0,x20);      # 12 MDBdummy 
(_21:void)<-(x29:void)(_22:str)(_5:str)(_23:str)(_24:int)(_6:int)(x20:bat[:oid,:int])
-    sql.rsColumn(x29,"sys.x","j","int",32,0,x28);      # 13 MDBdummy 
(_25:void)<-(x29:void)(_22:str)(_14:str)(_23:str)(_24:int)(_6:int)(x28:bat[:oid,:int])
-    sql.exportResult(x29,"");  # 14 MDBdummy (_26:void)<-(x29:void)(_27:str)
+    x29 := sql.resultSet(2,1,x20);     # 11 MDBdummy 
(x29:void)<-(_15:int)(_4:int)(x20:bat[:oid,:int])
+    sql.rsColumn(x29,"sys.x","i","int",32,0,x20);      # 12 MDBdummy 
(_26:void)<-(x29:void)(_27:str)(_8:str)(_28:str)(_29:int)(_9:int)(x20:bat[:oid,:int])
+    sql.rsColumn(x29,"sys.x","j","int",32,0,x28);      # 13 MDBdummy 
(_30:void)<-(x29:void)(_27:str)(_19:str)(_28:str)(_29:int)(_9:int)(x28:bat[:oid,:int])
+    sql.exportResult(x29,"");  # 14 MDBdummy (_31:void)<-(x29:void)(_32:str)
 end query;     # 15  
 #optimizer.partitions("user","query");
 #
@@ -64,38 +64,38 @@
     mdb.list("sql","query");   # 3 MDBlist3 (_6:void)<-(_4:str)(_5:str)
 end main;      # 4  
 function sql.query(A0:sht):void;
-    x1:bat[:oid,:int]{notnil=true,rows=1,bid=812}  := 
sql.bind("sys","x","i",0);
-    x6:bat[:oid,:int]{notnil=true,rows=0,bid=808}  := 
sql.bind("sys","x","i",1);
-    bpm7:bat[:oid,:int]  := bpm.unfold(x6);
-    bpm.emptySet(bpm7);
-    x9:bat[:oid,:int]{notnil=true,rows=0,bid=814}  := 
sql.bind("sys","x","i",2);
-    bpm10:bat[:oid,:int]  := bpm.unfold(x9);
+    x1:bat[:oid,:int]{bid=812,rows=1,notnil=true}  := 
sql.bind("sys","x","i",0);
+    x6:bat[:oid,:int]{bid=808,rows=0,notnil=true}  := 
sql.bind("sys","x","i",1);
+    bpm10:bat[:oid,:int]  := bpm.unfold(x6);
     bpm.emptySet(bpm10);
-    x21:bat[:oid,:int]{notnil=true,rows=1,bid=815}  := 
sql.bind("sys","x","j",1);
-    bpm13:bat[:oid,:int]  := bpm.unfold(x21);
+    x9:bat[:oid,:int]{bid=814,rows=0,notnil=true}  := 
sql.bind("sys","x","i",2);
+    bpm13:bat[:oid,:int]  := bpm.unfold(x9);
+    bpm.emptySet(bpm13);
+    x21:bat[:oid,:int]{bid=815,rows=1,notnil=true}  := 
sql.bind("sys","x","j",1);
+    bpm17:bat[:oid,:int]  := bpm.unfold(x21);
     x18{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);
     x19{rows=1} := bat.reverse(x18);
     x20{rows=1} := algebra.join(x19,x1);
-    _34 := bpm.new(:oid,:int);
-barrier x21:bat[:oid,:int]{notnil=true,rows=1,bid=815}  := 
bpm.newIterator(bpm13);
+    _39 := bpm.new(:oid,:int);
+barrier x21:bat[:oid,:int]{bid=815,rows=1,notnil=true}  := 
bpm.newIterator(bpm17);
     x28{rows=1} := algebra.join(x19,x21);
-    bpm.addPartition(_34,x28);
-    redo x21:bat[:oid,:int]{notnil=true,rows=1,bid=815}  := 
bpm.hasMoreElements(bpm13);
-exit x21:bat[:oid,:int]{notnil=true,rows=1,bid=815} ;
+    bpm.addPartition(_39,x28);
+    redo x21:bat[:oid,:int]{bid=815,rows=1,notnil=true}  := 
bpm.hasMoreElements(bpm17);
+exit x21:bat[:oid,:int]{bid=815,rows=1,notnil=true} ;
     x29 := sql.resultSet(2,1,x20);
     sql.rsColumn(x29,"sys.x","i","int",32,0,x20);
-    x28{rows=1} := bpm.fold(_34);
+    x28{rows=1} := bpm.fold(_39);
     sql.rsColumn(x29,"sys.x","j","int",32,0,x28);
     sql.exportResult(x29,"");
 catch SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
     bpm.garbage(bpm13);
+    bpm.garbage(bpm17);
     raise SQLexception;
 exit SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
     bpm.garbage(bpm13);
+    bpm.garbage(bpm17);
 end query;
 
 # 09:48:30 >  

Index: CMexample.stable.out
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/optimizer/Tests/CMexample.stable.out,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- CMexample.stable.out        19 May 2007 06:07:43 -0000      1.4
+++ CMexample.stable.out        9 Dec 2007 16:21:15 -0000       1.5
@@ -24,17 +24,17 @@
 #
 function user.main():void;     # 0  (main:void)
 # Cost model example   # 1  (_1:str)
-    r{rows=100:lng} := bat.new(:oid,:int);     # 2 CMDBATnew 
(r:bat[:oid,:int])<-(_3:oid)(_4:int)
-    s{rows=1000:lng} := bat.new(:oid,:int);    # 3 CMDBATnew 
(s:bat[:oid,:int])<-(_3:oid)(_4:int)
-    rs{rows=501:lng} := algebra.select(s,1,1); # 4 ALGselect 
(rs:bat[:oid,:int])<-(s:bat[:oid,:int])(_7:int)(_7:int)
+    r{rows=100} := bat.new(:oid,:int); # 2 CMDBATnew 
(r:bat[:oid,:int])<-(_4:oid)(_5:int)
+    s{rows=1000} := bat.new(:oid,:int);        # 3 CMDBATnew 
(s:bat[:oid,:int])<-(_4:oid)(_8:int)
+    rs{rows=501:lng} := algebra.select(s,1,1); # 4 ALGselect 
(rs:bat[:oid,:int])<-(s:bat[:oid,:int])(_10:int)(_10:int)
     rr{rows=100:lng} := bat.reverse(r);        # 5 BKCreverse 
(rr:bat[:int,:oid])<-(r:bat[:oid,:int])
     j{rows=100:lng} := algebra.join(rs,rr);    # 6 ALGjoin 
(j:bat[:oid,:oid])<-(rs:bat[:oid,:int])(rr:bat[:int,:oid])
-    mdb.list();        # 7 MDBlist (_11:void)
+    mdb.list();        # 7 MDBlist (_14:void)
 end main;      # 8  
 function user.main():void;
 # Cost model example 
-    r{rows=100:lng} := bat.new(:oid,:int);
-    s{rows=1000:lng} := bat.new(:oid,:int);
+    r{rows=100} := bat.new(:oid,:int);
+    s{rows=1000} := bat.new(:oid,:int);
     rs{rows=501:lng} := algebra.select(s,1,1);
     rr{rows=100:lng} := bat.reverse(r);
     j{rows=100:lng} := algebra.join(rs,rr);

Index: partitions07.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions07.stable.out,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- partitions07.stable.out     19 Aug 2007 21:02:19 -0000      1.3
+++ partitions07.stable.out     9 Dec 2007 16:21:17 -0000       1.4
@@ -52,28 +52,28 @@
 #    sql.exportResult(x18,"");
 #end query;
 function sql.query(A0:sht):void;       # 0  (query:void)<-(A0:sht)
-    x1:bat[:oid,:int]{bid=769,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","i",0);   # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_6:int)
-    x6:bat[:oid,:int]{bid=1435,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",1);  # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_8:int)
-    constraints.emptySet(x6);  # 3 CemptySet (_9:void)<-(x6:bat[:oid,:int])
-    x8:bat[:oid,:int]{bid=1436,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",2);  # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_11:int)
-    constraints.emptySet(x8);  # 5 CemptySet (_12:void)<-(x8:bat[:oid,:int])
-    x11{rows=1:lng} := algebra.markT(x1,[EMAIL PROTECTED]);    # 6 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_14:oid)
+    x1:bat[:oid,:int]{notnil=true,rows=1:lng,bid=769}  := 
sql.bind("sys","t","i",0);   # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_9:int)
+    x6:bat[:oid,:int]{notnil=true,rows=0:lng,bid=1435}  := 
sql.bind("sys","t","i",1);  # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_13:int)
+    constraints.emptySet(x6);  # 3 CemptySet (_14:void)<-(x6:bat[:oid,:int])
+    x8:bat[:oid,:int]{notnil=true,rows=0:lng,bid=1436}  := 
sql.bind("sys","t","i",2);  # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_17:int)
+    constraints.emptySet(x8);  # 5 CemptySet (_18:void)<-(x8:bat[:oid,:int])
+    x11{rows=1:lng} := algebra.markT(x1,[EMAIL PROTECTED]);    # 6 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_20:oid)
     x12{rows=1:lng} := bat.reverse(x11);       # 7 BKCreverse 
(x12:bat[:oid,:oid])<-(x11:bat[:oid,:oid])
     x13{rows=1:lng} := algebra.join(x12,x1);   # 8 ALGjoin 
(x13:bat[:oid,:int])<-(x12:bat[:oid,:oid])(x1:bat[:oid,:int])
     x14{rows=1:lng} := batcalc.flt(x13);       # 9 CMDconvert_int_flt 
(x14:bat[:oid,:flt])<-(x13:bat[:oid,:int])
-    x31 := bat.new(nil:oid,nil:flt);   # 10 CMDBATnew 
(x31:bat[:oid,:flt])<-(_19:oid)(_20:flt)
+    x31 := bat.new(nil:oid,nil:flt);   # 10 CMDBATnew 
(x31:bat[:oid,:flt])<-(_25:oid)(_26:flt)
 barrier (x35,x36,x37):= bat.newIterator(x14);  # 11 CHPbunIterator 
(x35:lng)(x36:oid)(x37:flt)<-(x14:bat[:oid,:flt]) jump 18
     x39 := mmath.sin(x37);     # 12 MATHunary_SINflt (x39:flt)<-(x37:flt)
-    bat.insert(x31,x36,x39);   # 13 BKCinsert_bun 
(_25:void)<-(x31:bat[:oid,:flt])(x36:oid)(x39:flt)
+    bat.insert(x31,x36,x39);   # 13 BKCinsert_bun 
(_31:void)<-(x31:bat[:oid,:flt])(x36:oid)(x39:flt)
     redo (x35,x36,x37):= bat.hasMoreElements(x14);     # 14 
CHPbunHasMoreElements (x35:lng)(x36:oid)(x37:flt)<-(x14:bat[:oid,:flt]) jump 12
 catch MALException:str ;       # 15  (MALException:str) jump 17
     redo (x35,x36,x37):= bat.hasMoreElements(x14);     # 16 
CHPbunHasMoreElements (x35:lng)(x36:oid)(x37:flt)<-(x14:bat[:oid,:flt]) jump 12
 exit MALException:str ;        # 17  (MALException:str)
 exit (x35,x36,x37);    # 18  (x35:lng)(x36:oid)(x37:flt)
     x15:bat[:oid,:flt]  := x31;        # 19  
(x15:bat[:oid,:flt])<-(x31:bat[:oid,:flt])
-    x18 := sql.resultSet(1,1,x15);     # 20 MDBdummy 
(x18:void)<-(_8:int)(_8:int)(x15:bat[:oid,:flt])
-    sql.rsColumn(x18,"sys.","sinxi","real",24,0,x15);  # 21 MDBdummy 
(_29:void)<-(x18:void)(_30:str)(_31:str)(_32:str)(_33:int)(_6:int)(x15:bat[:oid,:flt])
-    sql.exportResult(x18,"");  # 22 MDBdummy (_34:void)<-(x18:void)(_35:str)
+    x18 := sql.resultSet(1,1,x15);     # 20 MDBdummy 
(x18:void)<-(_13:int)(_13:int)(x15:bat[:oid,:flt])
+    sql.rsColumn(x18,"sys.","sinxi","real",24,0,x15);  # 21 MDBdummy 
(_35:void)<-(x18:void)(_36:str)(_37:str)(_38:str)(_39:int)(_9:int)(x15:bat[:oid,:flt])
+    sql.exportResult(x18,"");  # 22 MDBdummy (_40:void)<-(x18:void)(_41:str)
 end query;     # 23  
 #optimizer.partitions("sql","query");
 #mdb.list("sql","query");
@@ -86,13 +86,13 @@
     mdb.list("sql","query");   # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
 end main;      # 6  
 function sql.query(A0:sht):void;
-    x1:bat[:oid,:int]{bid=769,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","i",0);
-    x6:bat[:oid,:int]{bid=1435,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",1);
-    bpm7:bat[:oid,:int]  := bpm.unfold(x6);
-    bpm.emptySet(bpm7);
-    x8:bat[:oid,:int]{bid=1436,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",2);
-    bpm10:bat[:oid,:int]  := bpm.unfold(x8);
+    x1:bat[:oid,:int]{notnil=true,rows=1:lng,bid=769}  := 
sql.bind("sys","t","i",0);
+    x6:bat[:oid,:int]{notnil=true,rows=0:lng,bid=1435}  := 
sql.bind("sys","t","i",1);
+    bpm10:bat[:oid,:int]  := bpm.unfold(x6);
     bpm.emptySet(bpm10);
+    x8:bat[:oid,:int]{notnil=true,rows=0:lng,bid=1436}  := 
sql.bind("sys","t","i",2);
+    bpm15:bat[:oid,:int]  := bpm.unfold(x8);
+    bpm.emptySet(bpm15);
     x11{rows=1:lng} := algebra.markT(x1,[EMAIL PROTECTED]);
     x12{rows=1:lng} := bat.reverse(x11);
     x13{rows=1:lng} := algebra.join(x12,x1);
@@ -111,12 +111,12 @@
     sql.rsColumn(x18,"sys.","sinxi","real",24,0,x15);
     sql.exportResult(x18,"");
 catch SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
+    bpm.garbage(bpm15);
     raise SQLexception;
 exit SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
+    bpm.garbage(bpm15);
 end query;
 
 # 09:41:13 >  

Index: partitions04.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions04.stable.out,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- partitions04.stable.out     19 Aug 2007 21:02:19 -0000      1.4
+++ partitions04.stable.out     9 Dec 2007 16:21:17 -0000       1.5
@@ -45,21 +45,21 @@
 #    sql.exportResult(x18,"");
 #end query;
 function sql.query(A0:sht):void;       # 0  (query:void)<-(A0:sht)
-    x1:bat[:oid,:int]{bid=2199,rows=1,notnil=true}  := 
sql.bind("sys","t","i",0);      # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_6:int)
-    x6:bat[:oid,:int]{bid=2481,rows=0,notnil=true}  := 
sql.bind("sys","t","i",1);      # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_8:int)
-    constraints.emptySet(x6);  # 3 CemptySet (_9:void)<-(x6:bat[:oid,:int])
-    x8:bat[:oid,:int]{bid=2480,rows=0,notnil=true}  := 
sql.bind("sys","t","i",2);      # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_11:int)
-    constraints.emptySet(x8);  # 5 CemptySet (_12:void)<-(x8:bat[:oid,:int])
-    x13:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
sql.bind("sys","t","j",1);     # 6 MDBdummy 
(x13:bat[:oid,:int])<-(_3:str)(_4:str)(_14:str)(_8:int)
-    x11{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);        # 7 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_16:oid)
+    x1:bat[:oid,:int]{notnil=true,rows=1,bid=2199}  := 
sql.bind("sys","t","i",0);      # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_9:int)
+    x6:bat[:oid,:int]{notnil=true,rows=0,bid=2481}  := 
sql.bind("sys","t","i",1);      # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_4:int)
+    constraints.emptySet(x6);  # 3 CemptySet (_12:void)<-(x6:bat[:oid,:int])
+    x8:bat[:oid,:int]{notnil=true,rows=0,bid=2480}  := 
sql.bind("sys","t","i",2);      # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_15:int)
+    constraints.emptySet(x8);  # 5 CemptySet (_16:void)<-(x8:bat[:oid,:int])
+    x13:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
sql.bind("sys","t","j",1);     # 6 MDBdummy 
(x13:bat[:oid,:int])<-(_6:str)(_7:str)(_19:str)(_4:int)
+    x11{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);        # 7 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_21:oid)
     x12{rows=1} := bat.reverse(x11);   # 8 BKCreverse 
(x12:bat[:oid,:oid])<-(x11:bat[:oid,:oid])
     x15{rows=1} := algebra.join(x12,x13);      # 9 ALGjoin 
(x15:bat[:oid,:int])<-(x12:bat[:oid,:oid])(x13:bat[:oid,:int])
     x16{rows=1} := algebra.sortTail(x15);      # 10 ALGtsort 
(x16:bat[:oid,:int])<-(x15:bat[:oid,:int])
     x17{rows=1} := algebra.join(x12,x1);       # 11 ALGjoin 
(x17:bat[:oid,:int])<-(x12:bat[:oid,:oid])(x1:bat[:oid,:int])
-    x18 := sql.resultSet(2,1,x16);     # 12 MDBdummy 
(x18:void)<-(_11:int)(_8:int)(x16:bat[:oid,:int])
-    sql.rsColumn(x18,"sys.t","i","int",32,0,x17);      # 13 MDBdummy 
(_22:void)<-(x18:void)(_23:str)(_5:str)(_24:str)(_25:int)(_6:int)(x17:bat[:oid,:int])
-    sql.rsColumn(x18,"sys.t","j","int",32,0,x15);      # 14 MDBdummy 
(_26:void)<-(x18:void)(_23:str)(_14:str)(_24:str)(_25:int)(_6:int)(x15:bat[:oid,:int])
-    sql.exportResult(x18,"");  # 15 MDBdummy (_27:void)<-(x18:void)(_28:str)
+    x18 := sql.resultSet(2,1,x16);     # 12 MDBdummy 
(x18:void)<-(_15:int)(_4:int)(x16:bat[:oid,:int])
+    sql.rsColumn(x18,"sys.t","i","int",32,0,x17);      # 13 MDBdummy 
(_27:void)<-(x18:void)(_28:str)(_8:str)(_29:str)(_30:int)(_9:int)(x17:bat[:oid,:int])
+    sql.rsColumn(x18,"sys.t","j","int",32,0,x15);      # 14 MDBdummy 
(_31:void)<-(x18:void)(_28:str)(_19:str)(_29:str)(_30:int)(_9:int)(x15:bat[:oid,:int])
+    sql.exportResult(x18,"");  # 15 MDBdummy (_32:void)<-(x18:void)(_33:str)
 end query;     # 16  
 #optimizer.partitions("sql","query");
 #mdb.list("sql","query");
@@ -72,24 +72,24 @@
     mdb.list("sql","query");   # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
 end main;      # 6  
 function sql.query(A0:sht):void;
-    x1:bat[:oid,:int]{bid=2199,rows=1,notnil=true}  := 
sql.bind("sys","t","i",0);
-    x6:bat[:oid,:int]{bid=2481,rows=0,notnil=true}  := 
sql.bind("sys","t","i",1);
-    bpm7:bat[:oid,:int]  := bpm.unfold(x6);
-    bpm.emptySet(bpm7);
-    x8:bat[:oid,:int]{bid=2480,rows=0,notnil=true}  := 
sql.bind("sys","t","i",2);
-    bpm10:bat[:oid,:int]  := bpm.unfold(x8);
+    x1:bat[:oid,:int]{notnil=true,rows=1,bid=2199}  := 
sql.bind("sys","t","i",0);
+    x6:bat[:oid,:int]{notnil=true,rows=0,bid=2481}  := 
sql.bind("sys","t","i",1);
+    bpm10:bat[:oid,:int]  := bpm.unfold(x6);
     bpm.emptySet(bpm10);
-    x13:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
sql.bind("sys","t","j",1);
-    bpm13:bat[:oid,:int]  := bpm.unfold(x13);
+    x8:bat[:oid,:int]{notnil=true,rows=0,bid=2480}  := 
sql.bind("sys","t","i",2);
+    bpm13:bat[:oid,:int]  := bpm.unfold(x8);
+    bpm.emptySet(bpm13);
+    x13:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
sql.bind("sys","t","j",1);
+    bpm17:bat[:oid,:int]  := bpm.unfold(x13);
     x11{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);
     x12{rows=1} := bat.reverse(x11);
-    _35 := bpm.new(:oid,:int);
-barrier x13:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
bpm.newIterator(bpm13);
+    _40 := bpm.new(:oid,:int);
+barrier x13:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
bpm.newIterator(bpm17);
     x15{rows=1} := algebra.join(x12,x13);
-    bpm.addPartition(_35,x15);
-    redo x13:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
bpm.hasMoreElements(bpm13);
-exit x13:bat[:oid,:int]{bid=2201,rows=1,notnil=true} ;
-    x15{rows=1} := bpm.fold(_35);
+    bpm.addPartition(_40,x15);
+    redo x13:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
bpm.hasMoreElements(bpm17);
+exit x13:bat[:oid,:int]{notnil=true,rows=1,bid=2201} ;
+    x15{rows=1} := bpm.fold(_40);
     x16{rows=1} := algebra.sortTail(x15);
     x17{rows=1} := algebra.join(x12,x1);
     x18 := sql.resultSet(2,1,x16);
@@ -97,14 +97,14 @@
     sql.rsColumn(x18,"sys.t","j","int",32,0,x15);
     sql.exportResult(x18,"");
 catch SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
     bpm.garbage(bpm13);
+    bpm.garbage(bpm17);
     raise SQLexception;
 exit SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
     bpm.garbage(bpm13);
+    bpm.garbage(bpm17);
 end query;
 
 # 10:36:14 >  

Index: partitions03.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions03.stable.out,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- partitions03.stable.out     19 Aug 2007 21:02:18 -0000      1.4
+++ partitions03.stable.out     9 Dec 2007 16:21:16 -0000       1.5
@@ -49,13 +49,13 @@
 #    sql.exportResult(x24,"");
 #end query;
 function sql.query(A0:sht):void;       # 0  (query:void)<-(A0:sht)
-    x1:bat[:oid,:int]{bid=1489,rows=1,notnil=true}  := 
sql.bind("sys","y","i",0);      # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_6:int)
-    x6:bat[:oid,:int]{bid=1485,rows=0,notnil=true}  := 
sql.bind("sys","y","i",1);      # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_8:int)
-    constraints.emptySet(x6);  # 3 CemptySet (_9:void)<-(x6:bat[:oid,:int])
-    x8:bat[:oid,:int]{bid=1491,rows=0,notnil=true}  := 
sql.bind("sys","y","i",2);      # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_11:int)
-    constraints.emptySet(x8);  # 5 CemptySet (_12:void)<-(x8:bat[:oid,:int])
-    x16:bat[:oid,:int]{bid=1492,rows=1,notnil=true}  := 
sql.bind("sys","y","j",0);     # 6 MDBdummy 
(x16:bat[:oid,:int])<-(_3:str)(_4:str)(_14:str)(_6:int)
-    x11{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);        # 7 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_16:oid)
+    x1:bat[:oid,:int]{notnil=true,rows=1,bid=1489}  := 
sql.bind("sys","y","i",0);      # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_9:int)
+    x6:bat[:oid,:int]{notnil=true,rows=0,bid=1485}  := 
sql.bind("sys","y","i",1);      # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_4:int)
+    constraints.emptySet(x6);  # 3 CemptySet (_12:void)<-(x6:bat[:oid,:int])
+    x8:bat[:oid,:int]{notnil=true,rows=0,bid=1491}  := 
sql.bind("sys","y","i",2);      # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_15:int)
+    constraints.emptySet(x8);  # 5 CemptySet (_16:void)<-(x8:bat[:oid,:int])
+    x16:bat[:oid,:int]{notnil=true,rows=1,bid=1492}  := 
sql.bind("sys","y","j",0);     # 6 MDBdummy 
(x16:bat[:oid,:int])<-(_6:str)(_7:str)(_19:str)(_9:int)
+    x11{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);        # 7 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_21:oid)
     x12{rows=1} := bat.reverse(x11);   # 8 BKCreverse 
(x12:bat[:oid,:oid])<-(x11:bat[:oid,:oid])
     x13{rows=1} := algebra.join(x12,x1);       # 9 ALGjoin 
(x13:bat[:oid,:int])<-(x12:bat[:oid,:oid])(x1:bat[:oid,:int])
     (ext23,grp21):= group.new(x13);    # 10 GRPgroup 
(ext23:bat[:oid,:int])(grp21:bat[:oid,:oid])<-(x13:bat[:oid,:int])
@@ -64,10 +64,10 @@
     x21 := bat.mirror(ext34);  # 13 BKCmirror 
(x21:bat[:oid,:oid])<-(ext34:bat[:oid,:int])
     x22 := algebra.joinPath(x21,x12,x1);       # 14 ALGjoinPath 
(x22:bat[:any,:any])<-(x21:bat[:oid,:oid])(x12:bat[:oid,:oid])(x1:bat[:oid,:int])
     x23 := algebra.joinPath(x21,x12,x16);      # 15 ALGjoinPath 
(x23:bat[:any,:any])<-(x21:bat[:oid,:oid])(x12:bat[:oid,:oid])(x16:bat[:oid,:int])
-    x24 := sql.resultSet(2,1,x22);     # 16 MDBdummy 
(x24:void)<-(_11:int)(_8:int)(x22:bat[:any,:any])
-    sql.rsColumn(x24,"sys.y","i","int",32,0,x22);      # 17 MDBdummy 
(_28:void)<-(x24:void)(_29:str)(_5:str)(_30:str)(_31:int)(_6:int)(x22:bat[:any,:any])
-    sql.rsColumn(x24,"sys.y","j","int",32,0,x23);      # 18 MDBdummy 
(_32:void)<-(x24:void)(_29:str)(_14:str)(_30:str)(_31:int)(_6:int)(x23:bat[:any,:any])
-    sql.exportResult(x24,"");  # 19 MDBdummy (_33:void)<-(x24:void)(_34:str)
+    x24 := sql.resultSet(2,1,x22);     # 16 MDBdummy 
(x24:void)<-(_15:int)(_4:int)(x22:bat[:any,:any])
+    sql.rsColumn(x24,"sys.y","i","int",32,0,x22);      # 17 MDBdummy 
(_33:void)<-(x24:void)(_34:str)(_8:str)(_35:str)(_36:int)(_9:int)(x22:bat[:any,:any])
+    sql.rsColumn(x24,"sys.y","j","int",32,0,x23);      # 18 MDBdummy 
(_37:void)<-(x24:void)(_34:str)(_19:str)(_35:str)(_36:int)(_9:int)(x23:bat[:any,:any])
+    sql.exportResult(x24,"");  # 19 MDBdummy (_38:void)<-(x24:void)(_39:str)
 end query;     # 20  
 #optimizer.partitions("sql","query");
 #mdb.list("sql","query");
@@ -82,14 +82,14 @@
     mdb.list("sql","query");   # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
 end main;      # 6  
 function sql.query(A0:sht):void;
-    x1:bat[:oid,:int]{bid=1489,rows=1,notnil=true}  := 
sql.bind("sys","y","i",0);
-    x6:bat[:oid,:int]{bid=1485,rows=0,notnil=true}  := 
sql.bind("sys","y","i",1);
-    bpm7:bat[:oid,:int]  := bpm.unfold(x6);
-    bpm.emptySet(bpm7);
-    x8:bat[:oid,:int]{bid=1491,rows=0,notnil=true}  := 
sql.bind("sys","y","i",2);
-    bpm10:bat[:oid,:int]  := bpm.unfold(x8);
+    x1:bat[:oid,:int]{notnil=true,rows=1,bid=1489}  := 
sql.bind("sys","y","i",0);
+    x6:bat[:oid,:int]{notnil=true,rows=0,bid=1485}  := 
sql.bind("sys","y","i",1);
+    bpm10:bat[:oid,:int]  := bpm.unfold(x6);
     bpm.emptySet(bpm10);
-    x16:bat[:oid,:int]{bid=1492,rows=1,notnil=true}  := 
sql.bind("sys","y","j",0);
+    x8:bat[:oid,:int]{notnil=true,rows=0,bid=1491}  := 
sql.bind("sys","y","i",2);
+    bpm13:bat[:oid,:int]  := bpm.unfold(x8);
+    bpm.emptySet(bpm13);
+    x16:bat[:oid,:int]{notnil=true,rows=1,bid=1492}  := 
sql.bind("sys","y","j",0);
     x11{rows=1} := algebra.markT(x1,[EMAIL PROTECTED]);
     x12{rows=1} := bat.reverse(x11);
     x13{rows=1} := algebra.join(x12,x1);
@@ -104,12 +104,12 @@
     sql.rsColumn(x24,"sys.y","j","int",32,0,x23);
     sql.exportResult(x24,"");
 catch SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
+    bpm.garbage(bpm13);
     raise SQLexception;
 exit SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
+    bpm.garbage(bpm13);
 end query;
 
 # 08:13:11 >  

Index: ESexample.stable.out
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/optimizer/Tests/ESexample.stable.out,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- ESexample.stable.out        28 Dec 2006 22:16:17 -0000      1.22
+++ ESexample.stable.out        9 Dec 2007 16:21:16 -0000       1.23
@@ -30,7 +30,7 @@
     V12 := algebra.kdifference(V7,V11);        # 5 ALGkdiff 
(V12:bat[:oid,:int])<-(V7:bat[:oid,:int])(V11:bat[:oid,:int])
     V16 := algebra.markT(V12); # 6 ALGtmark_default 
(V16:bat[:oid,:oid])<-(V12:bat[:oid,:int])
     V17 := algebra.join(V16,V7);       # 7 ALGjoin 
(V17:bat[:oid,:int])<-(V16:bat[:oid,:oid])(V7:bat[:oid,:int])
-    bat.append(V1,V17);        # 8 BKCappend_wrap 
(_10:void)<-(V1:bat[:oid,:int])(V17:bat[:oid,:int])
+    bat.append(V1,V17);        # 8 BKCappend_wrap 
(_11:void)<-(V1:bat[:oid,:int])(V17:bat[:oid,:int])
 end tst;       # 9  
 #    optimizer.costModel("user","tst");
 #    optimizer.emptySet("user","tst");

Index: partitions05.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions05.stable.out,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- partitions05.stable.out     19 Aug 2007 21:02:19 -0000      1.4
+++ partitions05.stable.out     9 Dec 2007 16:21:17 -0000       1.5
@@ -46,22 +46,22 @@
 #    sql.exportResult(x21,"");
 #end query;
 function sql.query(A0:sht):void;       # 0  (query:void)<-(A0:sht)
-    x1:bat[:oid,:int]{bid=2199,rows=1,notnil=true}  := 
sql.bind("sys","t","i",0);      # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_6:int)
-    x10:bat[:oid,:int]{bid=2653,rows=0,notnil=true}  := 
sql.bind("sys","t","i",1);     # 2 MDBdummy 
(x10:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_8:int)
-    constraints.emptySet(x10); # 3 CemptySet (_9:void)<-(x10:bat[:oid,:int])
-    x12:bat[:oid,:int]{bid=2654,rows=0,notnil=true}  := 
sql.bind("sys","t","i",2);     # 4 MDBdummy 
(x12:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_11:int)
-    constraints.emptySet(x12); # 5 CemptySet (_12:void)<-(x12:bat[:oid,:int])
-    x17:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
sql.bind("sys","t","j",1);     # 6 MDBdummy 
(x17:bat[:oid,:int])<-(_3:str)(_4:str)(_14:str)(_8:int)
-    x7{rows=1} := algebra.uselect(x1,nil:int,2,false,false);   # 7 
ALGuselectInclusive 
(x7:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_16:int)(_11:int)(_17:bit)(_17:bit)
-    x14{rows=1} := algebra.markT(x7,[EMAIL PROTECTED]);        # 8 ALGtmark 
(x14:bat[:oid,:oid])<-(x7:bat[:oid,:oid])(_19:oid)
+    x1:bat[:oid,:int]{notnil=true,rows=1,bid=2199}  := 
sql.bind("sys","t","i",0);      # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_9:int)
+    x10:bat[:oid,:int]{notnil=true,rows=0,bid=2653}  := 
sql.bind("sys","t","i",1);     # 2 MDBdummy 
(x10:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_4:int)
+    constraints.emptySet(x10); # 3 CemptySet (_12:void)<-(x10:bat[:oid,:int])
+    x12:bat[:oid,:int]{notnil=true,rows=0,bid=2654}  := 
sql.bind("sys","t","i",2);     # 4 MDBdummy 
(x12:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_15:int)
+    constraints.emptySet(x12); # 5 CemptySet (_16:void)<-(x12:bat[:oid,:int])
+    x17:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
sql.bind("sys","t","j",1);     # 6 MDBdummy 
(x17:bat[:oid,:int])<-(_6:str)(_7:str)(_19:str)(_4:int)
+    x7{rows=1} := algebra.uselect(x1,nil:int,2,false,false);   # 7 
ALGuselectInclusive 
(x7:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_21:int)(_15:int)(_22:bit)(_22:bit)
+    x14{rows=1} := algebra.markT(x7,[EMAIL PROTECTED]);        # 8 ALGtmark 
(x14:bat[:oid,:oid])<-(x7:bat[:oid,:oid])(_24:oid)
     x15{rows=1} := bat.reverse(x14);   # 9 BKCreverse 
(x15:bat[:oid,:oid])<-(x14:bat[:oid,:oid])
     x16{rows=1} := algebra.join(x15,x1);       # 10 ALGjoin 
(x16:bat[:oid,:int])<-(x15:bat[:oid,:oid])(x1:bat[:oid,:int])
     x19{rows=1} := algebra.join(x15,x17);      # 11 ALGjoin 
(x19:bat[:oid,:int])<-(x15:bat[:oid,:oid])(x17:bat[:oid,:int])
     x24:bat[:oid,:int]{rows=1}  := algebra.reuse(x16); # 12 ALGreuse 
(x24:bat[:oid,:int])<-(x16:bat[:oid,:int])
     x20:bat[:oid,:int]{rows=1}  := batcalc.+(x24,x16,x19);     # 13 
CMDbataccumADD_int_int_int 
(x20:bat[:oid,:int])<-(x24:bat[:oid,:int])(x16:bat[:oid,:int])(x19:bat[:oid,:int])
-    x21 := sql.resultSet(1,1,x20);     # 14 MDBdummy 
(x21:void)<-(_8:int)(_8:int)(x20:bat[:oid,:int])
-    sql.rsColumn(x21,"sys.","sqlxaddxi","int",32,0,x20);       # 15 MDBdummy 
(_26:void)<-(x21:void)(_27:str)(_28:str)(_29:str)(_30:int)(_6:int)(x20:bat[:oid,:int])
-    sql.exportResult(x21,"");  # 16 MDBdummy (_31:void)<-(x21:void)(_32:str)
+    x21 := sql.resultSet(1,1,x20);     # 14 MDBdummy 
(x21:void)<-(_4:int)(_4:int)(x20:bat[:oid,:int])
+    sql.rsColumn(x21,"sys.","sqlxaddxi","int",32,0,x20);       # 15 MDBdummy 
(_31:void)<-(x21:void)(_32:str)(_33:str)(_34:str)(_35:int)(_9:int)(x20:bat[:oid,:int])
+    sql.exportResult(x21,"");  # 16 MDBdummy (_36:void)<-(x21:void)(_37:str)
 end query;     # 17  
 #optimizer.partitions("sql","query");
 #mdb.list("sql","query");
@@ -74,40 +74,40 @@
     mdb.list("sql","query");   # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
 end main;      # 6  
 function sql.query(A0:sht):void;
-    x1:bat[:oid,:int]{bid=2199,rows=1,notnil=true}  := 
sql.bind("sys","t","i",0);
-    x10:bat[:oid,:int]{bid=2653,rows=0,notnil=true}  := 
sql.bind("sys","t","i",1);
-    bpm7:bat[:oid,:int]  := bpm.unfold(x10);
-    bpm.emptySet(bpm7);
-    x12:bat[:oid,:int]{bid=2654,rows=0,notnil=true}  := 
sql.bind("sys","t","i",2);
-    bpm10:bat[:oid,:int]  := bpm.unfold(x12);
+    x1:bat[:oid,:int]{notnil=true,rows=1,bid=2199}  := 
sql.bind("sys","t","i",0);
+    x10:bat[:oid,:int]{notnil=true,rows=0,bid=2653}  := 
sql.bind("sys","t","i",1);
+    bpm10:bat[:oid,:int]  := bpm.unfold(x10);
     bpm.emptySet(bpm10);
-    x17:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
sql.bind("sys","t","j",1);
-    bpm13:bat[:oid,:int]  := bpm.unfold(x17);
+    x12:bat[:oid,:int]{notnil=true,rows=0,bid=2654}  := 
sql.bind("sys","t","i",2);
+    bpm13:bat[:oid,:int]  := bpm.unfold(x12);
+    bpm.emptySet(bpm13);
+    x17:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
sql.bind("sys","t","j",1);
+    bpm17:bat[:oid,:int]  := bpm.unfold(x17);
     x7{rows=1} := algebra.uselect(x1,nil:int,2,false,false);
     x14{rows=1} := algebra.markT(x7,[EMAIL PROTECTED]);
     x15{rows=1} := bat.reverse(x14);
     x16{rows=1} := algebra.join(x15,x1);
-    _39 := bpm.new(:oid,:int);
-barrier x17:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
bpm.newIterator(bpm13);
+    _44 := bpm.new(:oid,:int);
+barrier x17:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
bpm.newIterator(bpm17);
     x19{rows=1} := algebra.join(x15,x17);
-    bpm.addPartition(_39,x19);
-    redo x17:bat[:oid,:int]{bid=2201,rows=1,notnil=true}  := 
bpm.hasMoreElements(bpm13);
-exit x17:bat[:oid,:int]{bid=2201,rows=1,notnil=true} ;
+    bpm.addPartition(_44,x19);
+    redo x17:bat[:oid,:int]{notnil=true,rows=1,bid=2201}  := 
bpm.hasMoreElements(bpm17);
+exit x17:bat[:oid,:int]{notnil=true,rows=1,bid=2201} ;
     x24:bat[:oid,:int]{rows=1}  := algebra.reuse(x16);
-    x19{rows=1} := bpm.fold(_39);
+    x19{rows=1} := bpm.fold(_44);
     x20:bat[:oid,:int]{rows=1}  := batcalc.+(x24,x16,x19);
     x21 := sql.resultSet(1,1,x20);
     sql.rsColumn(x21,"sys.","sqlxaddxi","int",32,0,x20);
     sql.exportResult(x21,"");
 catch SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
     bpm.garbage(bpm13);
+    bpm.garbage(bpm17);
     raise SQLexception;
 exit SQLexception;
-    bpm.garbage(bpm7);
     bpm.garbage(bpm10);
     bpm.garbage(bpm13);
+    bpm.garbage(bpm17);
 end query;
 
 # 21:11:13 >  

Index: partitions02.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions02.stable.out,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- partitions02.stable.out     19 Aug 2007 21:02:18 -0000      1.5
+++ partitions02.stable.out     9 Dec 2007 16:21:16 -0000       1.6
@@ -38,15 +38,15 @@
 #    sql.exportValue(1,"sys.","countx","int",32,0,6,x13,"");
 #end query;
 function sql.query(A0:sht):void;       # 0  (query:void)<-(A0:sht)
-    x1:bat[:oid,:int]{bid=765,rows=0,notnil=true}  := 
sql.bind("sys","x","i",0);       # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_6:int)
-    x6:bat[:oid,:int]{bid=769,rows=0,notnil=true}  := 
sql.bind("sys","x","i",1);       # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_8:int)
-    constraints.emptySet(x6);  # 3 CemptySet (_9:void)<-(x6:bat[:oid,:int])
-    x8:bat[:oid,:int]{bid=771,rows=0,notnil=true}  := 
sql.bind("sys","x","i",2);       # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_3:str)(_4:str)(_5:str)(_11:int)
-    constraints.emptySet(x8);  # 5 CemptySet (_12:void)<-(x8:bat[:oid,:int])
-    x11{rows=0} := algebra.markT(x1,[EMAIL PROTECTED]);        # 6 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_14:oid)
+    x1:bat[:oid,:int]{notnil=true,rows=0,bid=765}  := 
sql.bind("sys","x","i",0);       # 1 MDBdummy 
(x1:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_4:int)
+    x6:bat[:oid,:int]{notnil=true,rows=0,bid=769}  := 
sql.bind("sys","x","i",1);       # 2 MDBdummy 
(x6:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_11:int)
+    constraints.emptySet(x6);  # 3 CemptySet (_12:void)<-(x6:bat[:oid,:int])
+    x8:bat[:oid,:int]{notnil=true,rows=0,bid=771}  := 
sql.bind("sys","x","i",2);       # 4 MDBdummy 
(x8:bat[:oid,:int])<-(_6:str)(_7:str)(_8:str)(_15:int)
+    constraints.emptySet(x8);  # 5 CemptySet (_16:void)<-(x8:bat[:oid,:int])
+    x11{rows=0} := algebra.markT(x1,[EMAIL PROTECTED]);        # 6 ALGtmark 
(x11:bat[:oid,:oid])<-(x1:bat[:oid,:int])(_18:oid)
     x12{rows=0} := bat.reverse(x11);   # 7 BKCreverse 
(x12:bat[:oid,:oid])<-(x11:bat[:oid,:oid])
     x13{rows=1} := aggr.count(x12);    # 8 ALGcount_bat 
(x13:int)<-(x12:bat[:oid,:oid])
-    sql.exportValue(1,"sys.","countx","int",32,0,6,x13,"");    # 9 MDBdummy 
(_17:void)<-(_8:int)(_18:str)(_19:str)(_20:str)(_21:int)(_6:int)(_22:int)(x13:int)(_23:str)
+    sql.exportValue(1,"sys.","countx","int",32,0,6,x13,"");    # 9 MDBdummy 
(_21:void)<-(_11:int)(_22:str)(_23:str)(_24:str)(_25:int)(_4:int)(_26:int)(x13:int)(_27:str)
 end query;     # 10  
 #optimizer.partitions("sql","query");
 #mdb.list("sql","query");
@@ -59,24 +59,24 @@
     mdb.list("sql","query");   # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
 end main;      # 6  
 function sql.query(A0:sht):void;
-    x1:bat[:oid,:int]{bid=765,rows=0,notnil=true}  := 
sql.bind("sys","x","i",0);
-    x6:bat[:oid,:int]{bid=769,rows=0,notnil=true}  := 
sql.bind("sys","x","i",1);
-    bpm7:bat[:oid,:int]  := bpm.unfold(x6);
-    bpm.emptySet(bpm7);
-    x8:bat[:oid,:int]{bid=771,rows=0,notnil=true}  := 
sql.bind("sys","x","i",2);
-    bpm10:bat[:oid,:int]  := bpm.unfold(x8);
-    bpm.emptySet(bpm10);
+    x1:bat[:oid,:int]{notnil=true,rows=0,bid=765}  := 
sql.bind("sys","x","i",0);
+    x6:bat[:oid,:int]{notnil=true,rows=0,bid=769}  := 
sql.bind("sys","x","i",1);
+    bpm9:bat[:oid,:int]  := bpm.unfold(x6);
+    bpm.emptySet(bpm9);
+    x8:bat[:oid,:int]{notnil=true,rows=0,bid=771}  := 
sql.bind("sys","x","i",2);
+    bpm13:bat[:oid,:int]  := bpm.unfold(x8);
+    bpm.emptySet(bpm13);
     x11{rows=0} := algebra.markT(x1,[EMAIL PROTECTED]);
     x12{rows=0} := bat.reverse(x11);
     x13{rows=1} := aggr.count(x12);
     sql.exportValue(1,"sys.","countx","int",32,0,6,x13,"");
 catch SQLexception;
-    bpm.garbage(bpm7);
-    bpm.garbage(bpm10);
+    bpm.garbage(bpm9);
+    bpm.garbage(bpm13);
     raise SQLexception;
 exit SQLexception;
-    bpm.garbage(bpm7);
-    bpm.garbage(bpm10);
+    bpm.garbage(bpm9);
+    bpm.garbage(bpm13);
 end query;
 
 # 22:44:54 >  


-------------------------------------------------------------------------
SF.Net email is sponsored by: 
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins

Reply via email to