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