Update of /cvsroot/monetdb/MonetDB5/src/optimizer/Tests
In directory sc8-pr-cvs16:/tmp/cvs-serv8534/Tests

Modified Files:
        All partitions04.stable.out partitions05.stable.out 
Added Files:
        partitions06.mal partitions06.stable.err 
        partitions06.stable.out partitions07.mal 
        partitions07.stable.err partitions07.stable.out 
Log Message:
The partitioned BATs may be input to calculations. In this case
we need to ensure that an iterator produces correctly aligned
portions. 

Two more complex partitioned queries are handled.


Index: All
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/optimizer/Tests/All,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- All 17 May 2007 19:17:33 -0000      1.52
+++ All 20 May 2007 07:51:30 -0000      1.53
@@ -43,6 +43,8 @@
 partitions03
 partitions04
 partitions05
+partitions06
+partitions07
 
 remote04
 remote05

--- NEW FILE: partitions07.stable.err ---
stderr of test 'partitions07` in directory 'src/optimizer` itself:


# 09:41:13 >  
# 09:41:13 >  Mtimeout -timeout 60 mserver5 
"--config=/ufs/mk/monet5/Linux/etc/monetdb5.conf" --debug=10 --set 
"monet_mod_path=/ufs/mk/monet5//Linux/lib/MonetDB5:/ufs/mk/monet5//Linux/lib/MonetDB5/lib:/ufs/mk/monet5//Linux/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/mk/monet5//Linux/var/MonetDB5/dbfarm" --set 
"sql_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/sql_logs" --set 
"xquery_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/xquery_logs" --set 
mapi_port=36568 --set xrpc_port=42864 --set monet_prompt= --trace 
--dbname=mTests_src_optimizer  partitions07.mal
# 09:41:13 >  

#warning: please don't forget to set your vault key!
#(see /ufs/mk/monet5/Linux/etc/monetdb5.conf)

# 09:41:13 >  
# 09:41:13 >  Done.
# 09:41:13 >  


--- NEW FILE: partitions06.stable.out ---
stdout of test 'partitions06` in directory 'src/optimizer` itself:


# 09:41:12 >  
# 09:41:12 >  Mtimeout -timeout 60 mserver5 
"--config=/ufs/mk/monet5/Linux/etc/monetdb5.conf" --debug=10 --set 
"monet_mod_path=/ufs/mk/monet5//Linux/lib/MonetDB5:/ufs/mk/monet5//Linux/lib/MonetDB5/lib:/ufs/mk/monet5//Linux/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/mk/monet5//Linux/var/MonetDB5/dbfarm" --set 
"sql_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/sql_logs" --set 
"xquery_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/xquery_logs" --set 
mapi_port=36568 --set xrpc_port=42864 --set monet_prompt= --trace 
--dbname=mTests_src_optimizer  partitions06.mal
# 09:41:12 >  

# MonetDB Server v5.0.0_beta2_1
# Copyright (c) 1993-2007 CWI, all rights reserved
# Compiled for x86_64-redhat-linux-gnu/64bit with 64bit OIDs dynamically linked
# dbname:mTests_src_optimizer
# Visit http://monetdb.cwi.nl/ for further information
##testing the BAT partition manager
## use a fake sql library
## see how you handle an aggregation
#module sql;
#pattern bind(s:str,t:str,i:str,flag:int):bat[:oid,:int]
pattern sql.bind(s:str,t:str,i:str,flag:int):bat[:oid,:int] address MDBdummy;   
# 0  (bind:bat[:oid,:int])<-(s:str)(t:str)(i:str)(flag:int)
#pattern rsColumn(b:any...):void
pattern sql.rsColumn(b:any...):void address MDBdummy;   # 0  
(rsColumn:void)<-(b:any)
#pattern resultSet(b:any...):void
pattern sql.resultSet(b:any...):void address MDBdummy;  # 0  
(resultSet:void)<-(b:any)
#pattern exportResult(b:any...):void
pattern sql.exportResult(b:any...):void address MDBdummy;       # 0  
(exportResult:void)<-(b:any)
#pattern exportValue(b:any...):void
pattern sql.exportValue(b:any...):void address MDBdummy;        # 0  
(exportValue:void)<-(b:any)
#
## select i+j+i from t where i<2;
#
#function query(A0:sht):void;
#    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);
#    constraints.emptySet(x10);
#    x12:bat[:oid,:int]{notnil=true,rows=0:lng,bid=771}  := 
sql.bind("sys","t","i",2);
#    constraints.emptySet(x12);
#    x17:bat[:oid,:int]{notnil=true,rows=1:lng,bid=772}  := 
sql.bind("sys","t","j",0);
#    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);
#    x19{rows=1:lng} := algebra.join(x15,x17);
#    x33 := algebra.reuse(x19);
#    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,"");
#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",0);   # 6 MDBdummy 
(x17:bat[:oid,:int])<-(_3:str)(_4:str)(_14:str)(_6: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)
    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)
end query;      # 18  
#optimizer.partitions("sql","query");
#mdb.list("sql","query");
#
function user.main():void;      # 0  (main:void)
#testing the BAT partition manager      # 1  (_1:str)
# use a fake sql library        # 2  (_2:str)
# see how you handle an aggregation     # 3  (_3:str)
# select i+j+i from t where i<2;        # 4  (_4:str)
    mdb.list("sql","query");    # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
end main;       # 6  
function sql.query{segment=2}(A0:sht):void;
    x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","i",0);
    bpm2:bat[:oid,:int]  := bpm.take("sys_t_i");
    x10:bat[:oid,:int]{segment=-1,bid=765,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",1);
    constraints.emptySet(x10);
    x12:bat[:oid,:int]{segment=-1,bid=771,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",2);
    constraints.emptySet(x12);
    x17:bat[:oid,:int]{segment=7,bid=772,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","j",0);
    bpm13:bat[:oid,:int]  := bpm.take("sys_t_j");
    _39 := bpm.new(:oid,:oid);
barrier x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.newIterator(bpm2);
    x7{segment=9,rows=1:lng} := algebra.uselect(x1,nil:int,2,false,false);
    x14{segment=9,rows=1:lng} := algebra.markT(x7,[EMAIL PROTECTED]);
    x15{segment=9,rows=1:lng} := bat.reverse(x14);
    bpm.addPartition(_39,x15);
    redo x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.hasMoreElements(bpm2);
exit x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true} ;
    _45 := bpm.new(:oid,:int);
barrier x15{segment=9,rows=1:lng} := bpm.newIterator(_39);
barrier x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.newIterator(bpm2);
    x16{segment=10,rows=1:lng} := algebra.join(x15,x1);
    bpm.addPartition(_45,x16);
    redo x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.hasMoreElements(bpm2);
    redo x15{segment=9,rows=1:lng} := bpm.hasMoreElements(_39);
exit x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true} ;
exit x15{segment=9,rows=1:lng};
    _53 := bpm.new(:oid,:int);
barrier x15{segment=9,rows=1:lng} := bpm.newIterator(_39);
barrier x17:bat[:oid,:int]{segment=7,bid=772,rows=1:lng,notnil=true}  := 
bpm.newIterator(bpm13);
    x19{segment=11,rows=1:lng} := algebra.join(x15,x17);
    bpm.addPartition(_53,x19);
    redo x17:bat[:oid,:int]{segment=7,bid=772,rows=1:lng,notnil=true}  := 
bpm.hasMoreElements(bpm13);
    redo x15{segment=9,rows=1:lng} := bpm.hasMoreElements(_39);
exit x17:bat[:oid,:int]{segment=7,bid=772,rows=1:lng,notnil=true} ;
exit x15{segment=9,rows=1:lng};
    _61 := bpm.new(:oid,:int);
barrier x19{segment=11,rows=1:lng} := bpm.newIterator(_53);
    x33{segment=12} := algebra.reuse(x19);
    bpm.addPartition(_61,x33);
    redo x19{segment=11,rows=1:lng} := bpm.hasMoreElements(_53);
exit x19{segment=11,rows=1:lng};
    _67 := bpm.new(:oid,:int);
barrier (_70,_71,_72):= bpm.newIterator(_61,_45,_53);
    x20:bat[:oid,:int]{segment=14,rows=1:lng}  := batcalc.+(_70,_71,_72);
    bpm.addPartition(_67,x20);
    redo (_70,_71,_72):= bpm.hasMoreElements(_61,_45,_53);
exit (_70,_71,_72);
    _75 := bpm.new(:oid,:int);
barrier (_78,_79,_80):= bpm.newIterator(_67,_67,_45);
    x20:bat[:oid,:int]{segment=14,rows=1:lng}  := batcalc.+(_78,_79,_80);
    bpm.addPartition(_75,x20);
    redo (_78,_79,_80):= bpm.hasMoreElements(_67,_67,_45);
exit (_78,_79,_80);
    x20:bat[:oid,:int]{segment=14,rows=1:lng}  := bpm.glue(_75);
    x21{segment=14} := sql.resultSet(1,1,x20);
    sql.rsColumn(x21,"sys.","sqlxaddxsqlxaddxi","int",32,0,x20);
    sql.exportResult(x21,"");
end query;

# 09:41:13 >  
# 09:41:13 >  Done.
# 09:41:13 >  


--- NEW FILE: partitions07.mal ---
#testing the BAT partition manager
# use a fake sql library
# see how you handle an aggregation
module sql;
pattern bind(s:str,t:str,i:str,flag:int):bat[:oid,:int]
address MDBdummy;
pattern rsColumn(b:any...):void
address MDBdummy;
pattern resultSet(b:any...):void
address MDBdummy;
pattern exportResult(b:any...):void
address MDBdummy;
pattern exportValue(b:any...):void
address MDBdummy;

#explain select sin(i) from t;

function query(A0:sht):void;
    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);
    constraints.emptySet(x6);
    x8:bat[:oid,:int]{notnil=true,rows=0:lng,bid=1436}  := 
sql.bind("sys","t","i",2);
    constraints.emptySet(x8);
    x11{rows=1:lng} := algebra.markT(x1,[EMAIL PROTECTED]);
    x12{rows=1:lng} := bat.reverse(x11);
    x13{rows=1:lng} := algebra.join(x12,x1);
    x14{rows=1:lng} := batcalc.flt(x13);
    x31 := bat.new(nil:oid,nil:flt);
barrier (x35,x36,x37):= bat.newIterator(x14);
    x39 := mmath.sin(x37);
    bat.insert(x31,x36,x39);
    redo (x35,x36,x37):= bat.hasMoreElements(x14);
catch MALException:str ;
    redo (x35,x36,x37):= bat.hasMoreElements(x14);
exit MALException:str ;
exit (x35,x36,x37);
    x15:bat[:oid,:flt]  := x31;
    x18 := sql.resultSet(1,1,x15);
    sql.rsColumn(x18,"sys.","sinxi","real",24,0,x15);
    sql.exportResult(x18,"");
end query;
optimizer.partitions("sql","query");
mdb.list("sql","query");

--- NEW FILE: partitions06.mal ---
#testing the BAT partition manager
# use a fake sql library
# see how you handle an aggregation
module sql;
pattern bind(s:str,t:str,i:str,flag:int):bat[:oid,:int]
address MDBdummy;
pattern rsColumn(b:any...):void
address MDBdummy;
pattern resultSet(b:any...):void
address MDBdummy;
pattern exportResult(b:any...):void
address MDBdummy;
pattern exportValue(b:any...):void
address MDBdummy;

# select i+j+i from t where i<2;

function query(A0:sht):void;
    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);
    constraints.emptySet(x10);
    x12:bat[:oid,:int]{notnil=true,rows=0:lng,bid=771}  := 
sql.bind("sys","t","i",2);
    constraints.emptySet(x12);
    x17:bat[:oid,:int]{notnil=true,rows=1:lng,bid=772}  := 
sql.bind("sys","t","j",0);
    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);
    x19{rows=1:lng} := algebra.join(x15,x17);
    x33 := algebra.reuse(x19);
    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,"");
end query;
optimizer.partitions("sql","query");
mdb.list("sql","query");

--- NEW FILE: partitions06.stable.err ---
stderr of test 'partitions06` in directory 'src/optimizer` itself:


# 09:41:12 >  
# 09:41:12 >  Mtimeout -timeout 60 mserver5 
"--config=/ufs/mk/monet5/Linux/etc/monetdb5.conf" --debug=10 --set 
"monet_mod_path=/ufs/mk/monet5//Linux/lib/MonetDB5:/ufs/mk/monet5//Linux/lib/MonetDB5/lib:/ufs/mk/monet5//Linux/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/mk/monet5//Linux/var/MonetDB5/dbfarm" --set 
"sql_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/sql_logs" --set 
"xquery_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/xquery_logs" --set 
mapi_port=36568 --set xrpc_port=42864 --set monet_prompt= --trace 
--dbname=mTests_src_optimizer  partitions06.mal
# 09:41:12 >  

#warning: please don't forget to set your vault key!
#(see /ufs/mk/monet5/Linux/etc/monetdb5.conf)

# 09:41:13 >  
# 09:41:13 >  Done.
# 09:41:13 >  


--- NEW FILE: partitions07.stable.out ---
stdout of test 'partitions07` in directory 'src/optimizer` itself:


# 09:41:13 >  
# 09:41:13 >  Mtimeout -timeout 60 mserver5 
"--config=/ufs/mk/monet5/Linux/etc/monetdb5.conf" --debug=10 --set 
"monet_mod_path=/ufs/mk/monet5//Linux/lib/MonetDB5:/ufs/mk/monet5//Linux/lib/MonetDB5/lib:/ufs/mk/monet5//Linux/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/mk/monet5//Linux/var/MonetDB5/dbfarm" --set 
"sql_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/sql_logs" --set 
"xquery_logdir=/ufs/mk/monet5//Linux/var/MonetDB5/xquery_logs" --set 
mapi_port=36568 --set xrpc_port=42864 --set monet_prompt= --trace 
--dbname=mTests_src_optimizer  partitions07.mal
# 09:41:13 >  

# MonetDB Server v5.0.0_beta2_1
# Copyright (c) 1993-2007 CWI, all rights reserved
# Compiled for x86_64-redhat-linux-gnu/64bit with 64bit OIDs dynamically linked
# dbname:mTests_src_optimizer
# Visit http://monetdb.cwi.nl/ for further information
##testing the BAT partition manager
## use a fake sql library
## see how you handle an aggregation
#module sql;
#pattern bind(s:str,t:str,i:str,flag:int):bat[:oid,:int]
pattern sql.bind(s:str,t:str,i:str,flag:int):bat[:oid,:int] address MDBdummy;   
# 0  (bind:bat[:oid,:int])<-(s:str)(t:str)(i:str)(flag:int)
#pattern rsColumn(b:any...):void
pattern sql.rsColumn(b:any...):void address MDBdummy;   # 0  
(rsColumn:void)<-(b:any)
#pattern resultSet(b:any...):void
pattern sql.resultSet(b:any...):void address MDBdummy;  # 0  
(resultSet:void)<-(b:any)
#pattern exportResult(b:any...):void
pattern sql.exportResult(b:any...):void address MDBdummy;       # 0  
(exportResult:void)<-(b:any)
#pattern exportValue(b:any...):void
pattern sql.exportValue(b:any...):void address MDBdummy;        # 0  
(exportValue:void)<-(b:any)
#
##explain select sin(i) from t;
#
#function query(A0:sht):void;
#    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);
#    constraints.emptySet(x6);
#    x8:bat[:oid,:int]{notnil=true,rows=0:lng,bid=1436}  := 
sql.bind("sys","t","i",2);
#    constraints.emptySet(x8);
#    x11{rows=1:lng} := algebra.markT(x1,[EMAIL PROTECTED]);
#    x12{rows=1:lng} := bat.reverse(x11);
#    x13{rows=1:lng} := algebra.join(x12,x1);
#    x14{rows=1:lng} := batcalc.flt(x13);
#    x31 := bat.new(nil:oid,nil:flt);
#barrier (x35,x36,x37):= bat.newIterator(x14);
#    x39 := mmath.sin(x37);
#    bat.insert(x31,x36,x39);
#    redo (x35,x36,x37):= bat.hasMoreElements(x14);
#catch MALException:str ;
#    redo (x35,x36,x37):= bat.hasMoreElements(x14);
#exit MALException:str ;
#exit (x35,x36,x37);
#    x15:bat[:oid,:flt]  := x31;
#    x18 := sql.resultSet(1,1,x15);
#    sql.rsColumn(x18,"sys.","sinxi","real",24,0,x15);
#    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)
    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)
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)
    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)
end query;      # 23  
#optimizer.partitions("sql","query");
#mdb.list("sql","query");
#
function user.main():void;      # 0  (main:void)
#testing the BAT partition manager      # 1  (_1:str)
# use a fake sql library        # 2  (_2:str)
# see how you handle an aggregation     # 3  (_3:str)
#explain select sin(i) from t;  # 4  (_4:str)
    mdb.list("sql","query");    # 5 MDBlist3 (_8:void)<-(_6:str)(_7:str)
end main;       # 6  
function sql.query{segment=2}(A0:sht):void;
    x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
sql.bind("sys","t","i",0);
    bpm2:bat[:oid,:int]  := bpm.take("sys_t_i");
    x6:bat[:oid,:int]{segment=-1,bid=1435,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",1);
    constraints.emptySet(x6);
    x8:bat[:oid,:int]{segment=-1,bid=1436,rows=0:lng,notnil=true}  := 
sql.bind("sys","t","i",2);
    constraints.emptySet(x8);
    _39 := bpm.new(:oid,:oid);
barrier x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.newIterator(bpm2);
    x11{segment=8,rows=1:lng} := algebra.markT(x1,[EMAIL PROTECTED]);
    x12{segment=8,rows=1:lng} := bat.reverse(x11);
    bpm.addPartition(_39,x12);
    redo x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.hasMoreElements(bpm2);
exit x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true} ;
    _45 := bpm.new(:oid,:int);
barrier x12{segment=8,rows=1:lng} := bpm.newIterator(_39);
barrier x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.newIterator(bpm2);
    x13{segment=9,rows=1:lng} := algebra.join(x12,x1);
    bpm.addPartition(_45,x13);
    redo x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true}  := 
bpm.hasMoreElements(bpm2);
    redo x12{segment=8,rows=1:lng} := bpm.hasMoreElements(_39);
exit x1:bat[:oid,:int]{segment=2,bid=769,rows=1:lng,notnil=true} ;
exit x12{segment=8,rows=1:lng};
    _53 := bpm.new(:oid,:flt);
barrier _56 := bpm.newIterator(_45);
    x14{segment=10,rows=1:lng} := batcalc.flt(_56);
    bpm.addPartition(_53,x14);
    redo _56 := bpm.hasMoreElements(_45);
exit _56;
    x31{segment=10} := bat.new(nil:oid,nil:flt);
    x14{segment=10,rows=1:lng} := bpm.glue(_53);
barrier (x35{segment=10},x36{segment=10},x37{segment=10}):= 
bat.newIterator(x14);
    x39{segment=10} := mmath.sin(x37);
    bat.insert(x31,x36,x39);
    redo (x35{segment=10},x36{segment=10},x37{segment=10}):= 
bat.hasMoreElements(x14);
catch MALException:str{segment=10} ;
    redo (x35{segment=10},x36{segment=10},x37{segment=10}):= 
bat.hasMoreElements(x14);
exit MALException:str{segment=10} ;
exit (x35{segment=10},x36{segment=10},x37{segment=10});
    x15:bat[:oid,:flt]{segment=10}  := x31;
    x18{segment=10} := sql.resultSet(1,1,x15);
    sql.rsColumn(x18,"sys.","sinxi","real",24,0,x15);
    sql.exportResult(x18,"");
end query;

# 09:41:13 >  
# 09:41:13 >  Done.
# 09:41:13 >  


Index: partitions04.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions04.stable.out,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- partitions04.stable.out     17 May 2007 19:17:34 -0000      1.1
+++ partitions04.stable.out     20 May 2007 07:51:31 -0000      1.2
@@ -96,24 +96,19 @@
     redo x12{segment=9,rows=1} := bpm.hasMoreElements(_35);
 exit x13:bat[:oid,:int]{segment=7,bid=2201,rows=1,notnil=true} ;
 exit x12{segment=9,rows=1};
-    _49 := bpm.new(:oid,:int);
-barrier x15{segment=10,rows=1} := bpm.newIterator(_41);
-    x16{segment=11,rows=1} := algebra.sortTail(x15);
-    bpm.addPartition(_49,x16);
-    redo x15{segment=10,rows=1} := bpm.hasMoreElements(_41);
-exit x15{segment=10,rows=1};
-    _55 := bpm.new(:oid,:int);
+    _49 := bpm.glue(_41);
+    x16{segment=11,rows=1} := algebra.sortTail(_49);
+    _50 := bpm.new(:oid,:int);
 barrier x12{segment=9,rows=1} := bpm.newIterator(_35);
 barrier x1:bat[:oid,:int]{segment=2,bid=2199,rows=1,notnil=true}  := 
bpm.newIterator(bpm2);
     x17{segment=12,rows=1} := algebra.join(x12,x1);
-    bpm.addPartition(_55,x17);
+    bpm.addPartition(_50,x17);
     redo x1:bat[:oid,:int]{segment=2,bid=2199,rows=1,notnil=true}  := 
bpm.hasMoreElements(bpm2);
     redo x12{segment=9,rows=1} := bpm.hasMoreElements(_35);
 exit x1:bat[:oid,:int]{segment=2,bid=2199,rows=1,notnil=true} ;
 exit x12{segment=9,rows=1};
-    x16{segment=11,rows=1} := bpm.glue(_49);
     x18{segment=13} := sql.resultSet(2,1,x16);
-    x17{segment=12,rows=1} := bpm.glue(_55);
+    x17{segment=12,rows=1} := bpm.glue(_50);
     sql.rsColumn(x18,"sys.t","i","int",32,0,x17);
     x15{segment=10,rows=1} := bpm.glue(_41);
     sql.rsColumn(x18,"sys.t","j","int",32,0,x15);

Index: partitions05.stable.out
===================================================================
RCS file: 
/cvsroot/monetdb/MonetDB5/src/optimizer/Tests/partitions05.stable.out,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- partitions05.stable.out     17 May 2007 19:21:14 -0000      1.1
+++ partitions05.stable.out     20 May 2007 07:51:31 -0000      1.2
@@ -108,11 +108,20 @@
     redo x15{segment=9,rows=1} := bpm.hasMoreElements(_39);
 exit x17:bat[:oid,:int]{segment=7,bid=2201,rows=1,notnil=true} ;
 exit x15{segment=9,rows=1};
-    x16{segment=10,rows=1} := bpm.glue(_45);
+    _61 := bpm.new(:oid,:int);
+barrier x16{segment=10,rows=1} := bpm.newIterator(_45);
     x24:bat[:oid,:int]{segment=12,rows=1}  := algebra.reuse(x16);
-    x19{segment=11,rows=1} := bpm.glue(_53);
-    x20:bat[:oid,:int]{segment=12,rows=1}  := batcalc.+(x24,x16,x19);
-    x21{segment=12} := sql.resultSet(1,1,x20);
+    bpm.addPartition(_61,x24);
+    redo x16{segment=10,rows=1} := bpm.hasMoreElements(_45);
+exit x16{segment=10,rows=1};
+    _67 := bpm.new(:oid,:int);
+barrier (_70,_71,_72):= bpm.newIterator(_61,_45,_53);
+    x20:bat[:oid,:int]{segment=13,rows=1}  := batcalc.+(_70,_71,_72);
+    bpm.addPartition(_67,x20);
+    redo (_70,_71,_72):= bpm.hasMoreElements(_61,_45,_53);
+exit (_70,_71,_72);
+    x20:bat[:oid,:int]{segment=13,rows=1}  := bpm.glue(_67);
+    x21{segment=13} := sql.resultSet(1,1,x20);
     sql.rsColumn(x21,"sys.","sqlxaddxi","int",32,0,x20);
     sql.exportResult(x21,"");
 end query;


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins

Reply via email to