Changeset: 95370bb07d9f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=95370bb07d9f Added Files: monetdb5/modules/mal/Tests/iterator01.mal monetdb5/modules/mal/Tests/iterator01.stable.err monetdb5/modules/mal/Tests/iterator01.stable.out monetdb5/modules/mal/Tests/iterator02.mal monetdb5/modules/mal/Tests/iterator02.stable.err monetdb5/modules/mal/Tests/iterator02.stable.out monetdb5/modules/mal/Tests/iterator03.mal monetdb5/modules/mal/Tests/iterator03.stable.err monetdb5/modules/mal/Tests/iterator03.stable.out monetdb5/modules/mal/Tests/modulechk.mal monetdb5/modules/mal/Tests/modulechk.stable.err monetdb5/modules/mal/Tests/modulechk.stable.out monetdb5/modules/mal/iterator.c monetdb5/modules/mal/iterator.h monetdb5/modules/mal/iterator.mal monetdb5/modules/mal/language.c monetdb5/modules/mal/language.h monetdb5/modules/mal/language.mal Removed Files: monetdb5/modules/mal/Tests/chopper01.mal monetdb5/modules/mal/Tests/chopper01.stable.err monetdb5/modules/mal/Tests/chopper01.stable.out monetdb5/modules/mal/Tests/chopper02.mal monetdb5/modules/mal/Tests/chopper02.stable.err monetdb5/modules/mal/Tests/chopper02.stable.out monetdb5/modules/mal/Tests/chopper03.mal monetdb5/modules/mal/Tests/chopper03.stable.err monetdb5/modules/mal/Tests/chopper03.stable.out monetdb5/modules/mal/chopper.c monetdb5/modules/mal/chopper.mal monetdb5/modules/mal/language.mx Modified Files: monetdb5/extras/jaql/jaqlfunc.mal monetdb5/mal/Tests/All monetdb5/mal/Tests/dataflow01.mal monetdb5/mal/Tests/dataflow01.stable.out monetdb5/mal/Tests/recycle05.mal monetdb5/mal/Tests/recycle05.stable.out monetdb5/mal/Tests/recycle06.mal monetdb5/mal/Tests/recycle06.stable.out monetdb5/mal/Tests/recycle07.mal monetdb5/mal/Tests/recycle07.stable.out monetdb5/mal/Tests/recycle08.mal monetdb5/mal/Tests/recycle08.stable.out monetdb5/mal/Tests/tst1200.mal monetdb5/mal/Tests/tst1201.mal monetdb5/mal/Tests/tst1202.stable.out monetdb5/mal/Tests/tst1203.stable.out monetdb5/mal/Tests/tst1205.mal monetdb5/mal/Tests/tst1205.stable.out monetdb5/mal/Tests/tst201.mal monetdb5/mal/Tests/tst250.mal monetdb5/mal/Tests/tst250.stable.out monetdb5/mal/Tests/tst251.mal monetdb5/mal/Tests/tst251.stable.out monetdb5/mal/Tests/tst252.mal monetdb5/mal/Tests/tst252.stable.out monetdb5/mal/Tests/tst273.mal monetdb5/mal/Tests/tst273.stable.out monetdb5/mal/Tests/tst274.mal monetdb5/mal/Tests/tst274.stable.out.oid64 monetdb5/mal/Tests/tst280.mal monetdb5/mal/Tests/tst280.stable.out monetdb5/mal/Tests/tst400.mal monetdb5/mal/Tests/tst400.stable.out monetdb5/mal/Tests/tst400a.mal monetdb5/mal/Tests/tst400a.stable.out monetdb5/mal/Tests/tst400d.mal monetdb5/mal/Tests/tst400d.stable.out monetdb5/mal/Tests/tst401.mal monetdb5/mal/Tests/tst401.stable.err monetdb5/mal/Tests/tst401.stable.out monetdb5/mal/Tests/tst560.mal monetdb5/mal/Tests/tst560.stable.out monetdb5/mal/Tests/tst850.stable.out monetdb5/mal/Tests/tst901.mal monetdb5/mal/Tests/tst901.stable.out monetdb5/mal/Tests/tst901a.mal monetdb5/mal/Tests/tst901a.stable.out monetdb5/mal/Tests/tst901b.mal monetdb5/mal/Tests/tst901b.stable.out monetdb5/mal/Tests/tst902.mal monetdb5/mal/Tests/tst902.stable.out monetdb5/mal/Tests/tst903.mal monetdb5/mal/Tests/tst903.stable.out monetdb5/mal/Tests/tst904.mal monetdb5/mal/Tests/tst904.stable.out monetdb5/mal/Tests/tst905.mal monetdb5/mal/Tests/tst905.stable.out monetdb5/mal/Tests/tst906.mal monetdb5/mal/Tests/tst906.stable.out monetdb5/mal/Tests/tst907.mal monetdb5/mal/Tests/tst907.stable.out monetdb5/mal/Tests/tst908.mal monetdb5/mal/Tests/tst908.stable.out monetdb5/mal/Tests/tst911.mal monetdb5/mal/Tests/tst911.stable.out monetdb5/mal/Tests/tst912.mal monetdb5/mal/Tests/tst912.stable.out monetdb5/mal/Tests/tst920.mal monetdb5/mal/Tests/tst920.stable.out monetdb5/mal/Tests/venks.mal monetdb5/mal/Tests/venks.stable.out monetdb5/mal/mal_function.c monetdb5/mal/mal_interpreter.c monetdb5/modules/kernel/Tests/vacuum.mal monetdb5/modules/kernel/Tests/vacuum.stable.out monetdb5/modules/mal/Makefile.ag monetdb5/modules/mal/Tests/All monetdb5/modules/mal/Tests/cluster00.mal monetdb5/modules/mal/Tests/cluster00.stable.out monetdb5/modules/mal/Tests/compress.mal monetdb5/modules/mal/Tests/compress.stable.out monetdb5/modules/mal/Tests/inspect05.stable.out monetdb5/modules/mal/Tests/inspect10.stable.out monetdb5/modules/mal/Tests/remote99.mal monetdb5/modules/mal/Tests/remote99.stable.out monetdb5/modules/mal/algebraExtensions.h monetdb5/modules/mal/batExtensions.c monetdb5/modules/mal/batExtensions.mal monetdb5/modules/mal/groupby.h monetdb5/modules/mal/mal_init.mal monetdb5/modules/mal/mat.mx monetdb5/modules/mal/mdb.c monetdb5/modules/mal/mdb.mal monetdb5/modules/mal/pcre.c monetdb5/modules/mal/transaction.c monetdb5/optimizer/Tests/GCexample01.mal monetdb5/optimizer/Tests/GCexample01.stable.out monetdb5/optimizer/Tests/Mexample.mal monetdb5/optimizer/Tests/Mexample.stable.out monetdb5/optimizer/Tests/emptyset01.mal monetdb5/optimizer/Tests/emptyset01.stable.out monetdb5/optimizer/Tests/inline00.mal monetdb5/optimizer/Tests/inline00.stable.out monetdb5/optimizer/Tests/inline01.mal monetdb5/optimizer/Tests/inline01.stable.out monetdb5/optimizer/Tests/inliners.mal monetdb5/optimizer/Tests/remap.stable.out monetdb5/optimizer/Tests/reorder00.mal monetdb5/optimizer/Tests/reorder00.stable.out monetdb5/optimizer/Tests/tst4300.mal monetdb5/optimizer/Tests/tst4300.stable.out monetdb5/optimizer/Tests/tst4620.mal monetdb5/optimizer/Tests/tst4620.stable.out monetdb5/optimizer/Tests/tst4700.mal monetdb5/optimizer/Tests/tst4700.stable.out monetdb5/optimizer/Tests/tst4801.mal monetdb5/optimizer/Tests/tst4801.stable.out monetdb5/optimizer/opt_dataflow.c monetdb5/optimizer/opt_multiplex.c monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/scheduler/srvpool.c monetdb5/tests/BugReports/Tests/no.051.mal monetdb5/tests/BugReports/Tests/no.051.stable.out monetdb5/tests/gdkTests/Tests/binsearchmultijoin.mal monetdb5/tests/gdkTests/Tests/semijoin.mal monetdb5/tests/gdkTests/Tests/semijoin.stable.out testing/Mtest.py.in Branch: default Log Message:
Iterator semantics changes The iterators over BATs and scalar ranges have been changed as part of the de-Mx activities. Iterators at the MAL level are concentrated in the new iterator module. They can be used as follows to construct for i:=0 step 1 until 10: barrier i:=0; redo i:= iterator.next(1,10); exit; and for BAT variables: barried (h,t) := iterator.new(b); redo (h,t) := iterator.next(b); exit MAL interpreter semantics to deal with barrier statements has been changed. Now any range can be constructed, as the barrier is left with the control variable (the first in the target list) is set to nil. For boolean variables, the barrier is only entered when it is set to true. The dataflow() returns a bit. Most changes here reflect the carry thru of this change into the test set. (a few requires some more testing) diffs (truncated from 7664 to 300 lines): diff --git a/monetdb5/extras/jaql/jaqlfunc.mal b/monetdb5/extras/jaql/jaqlfunc.mal --- a/monetdb5/extras/jaql/jaqlfunc.mal +++ b/monetdb5/extras/jaql/jaqlfunc.mal @@ -123,19 +123,18 @@ end count; function range(start:bat[:oid,:lng], vend:bat[:oid,:lng], skip:bat[:oid,:lng]):bat[:oid,:lng]; ret := bat.new(:oid,:lng); - barrier (b,h,t) := bat.newIterator(start); + barrier (h,t) := iterator.new(start); iend := algebra.fetch(vend, h); iskip := algebra.fetch(skip, h); # TODO: use array.series from sciql # ret := array.series(t, iskip, iend, 1, 1); iend := calc.+(iend, 1); - barrier (v,i) := language.newRange(t); + barrier i := t; ret := bat.insert(ret, h, i); - redo (v,i) := language.nextElement(iskip, iend); - exit (v,i); - redo (b,h,t) := bat.hasMoreElements(start); - exit (b,h,t); - + redo i := iterator.next(iskip, iend); + exit i; + redo (h,t) := iterator.next(start); + exit (h,t); return ret; end range; diff --git a/monetdb5/mal/Tests/All b/monetdb5/mal/Tests/All --- a/monetdb5/mal/Tests/All +++ b/monetdb5/mal/Tests/All @@ -196,7 +196,7 @@ tst801 tst802 tst803 tst804 -tst805 +#tst805 invalid, no BAT columns tst810 tst819 tst820 diff --git a/monetdb5/mal/Tests/dataflow01.mal b/monetdb5/mal/Tests/dataflow01.mal --- a/monetdb5/mal/Tests/dataflow01.mal +++ b/monetdb5/mal/Tests/dataflow01.mal @@ -11,12 +11,12 @@ dbgmsk_keep := calc.xor(INT_MAX,dbgmsk_u dbgmsk_set := calc.and(dbgmsk_restore,dbgmsk_keep); mdb.setDebug(dbgmsk_set); -barrier (go,i):= language.newRange(0:lng); +barrier i:= 0:lng; k:= k+1; l:= calc.lng(k); bat.insert(b,nil:oid,l); - redo (go,i):= language.nextElement(1:lng,1000000:lng); -exit (go,i); + redo i:= iterator.next(1:lng,1000000:lng); +exit i; mdb.setDebug(dbgmsk_restore); diff --git a/monetdb5/mal/Tests/dataflow01.stable.out b/monetdb5/mal/Tests/dataflow01.stable.out --- a/monetdb5/mal/Tests/dataflow01.stable.out +++ b/monetdb5/mal/Tests/dataflow01.stable.out @@ -21,12 +21,12 @@ function user.load():bat[:oid,:lng]; dbgmsk_keep := calc.xor(INT_MAX,dbgmsk_unset); dbgmsk_set := calc.and(dbgmsk_restore,dbgmsk_keep); mdb.setDebug(dbgmsk_set); -barrier (go,i) := language.newRange(0:lng); +barrier i := 0:lng; k := calc.+(k,1); l := calc.lng(k); bat.insert(b,nil:oid,l); - redo (go,i) := language.nextElement(1:lng,1000000:lng); -exit (go,i); + redo i := iterator.next(1:lng,1000000:lng); +exit i; mdb.setDebug(dbgmsk_restore); return load := b; end load; diff --git a/monetdb5/mal/Tests/recycle05.mal b/monetdb5/mal/Tests/recycle05.mal --- a/monetdb5/mal/Tests/recycle05.mal +++ b/monetdb5/mal/Tests/recycle05.mal @@ -2,10 +2,10 @@ function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b:= bat.new(:oid,:int); -barrier (go,i):= language.newRange(0:int); +barrier i:= 0:int; bat.append(b,i); - redo (go,i):= language.nextElement(1:int,1000:int); -exit (go,i); + redo i:= iterator.next(1:int,1000:int); +exit i; return bind:=b; end bind; diff --git a/monetdb5/mal/Tests/recycle05.stable.out b/monetdb5/mal/Tests/recycle05.stable.out --- a/monetdb5/mal/Tests/recycle05.stable.out +++ b/monetdb5/mal/Tests/recycle05.stable.out @@ -23,10 +23,10 @@ stdout of test 'recycle05` in directory #end bind; function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b := bat.new(:oid,:int); -barrier (go,i) := language.newRange(0:int); +barrier i := 0:int; bat.append(b,i); - redo (go,i) := language.nextElement(1:int,1000:int); -exit (go,i); + redo i := iterator.next(1:int,1000:int); +exit i; return bind := b; end bind; # diff --git a/monetdb5/mal/Tests/recycle06.mal b/monetdb5/mal/Tests/recycle06.mal --- a/monetdb5/mal/Tests/recycle06.mal +++ b/monetdb5/mal/Tests/recycle06.mal @@ -2,10 +2,10 @@ function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b:= bat.new(:oid,:int); -barrier (go,i):= language.newRange(0:int); +barrier i:= 0:int; bat.append(b,i); - redo (go,i):= language.nextElement(1:int,1000:int); -exit (go,i); + redo i:= iterator.next(1:int,1000:int); +exit i; return bind:=b; end bind; diff --git a/monetdb5/mal/Tests/recycle06.stable.out b/monetdb5/mal/Tests/recycle06.stable.out --- a/monetdb5/mal/Tests/recycle06.stable.out +++ b/monetdb5/mal/Tests/recycle06.stable.out @@ -23,10 +23,10 @@ stdout of test 'recycle06` in directory #end bind; function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b := bat.new(:oid,:int); -barrier (go,i) := language.newRange(0:int); +barrier i := 0:int; bat.append(b,i); - redo (go,i) := language.nextElement(1:int,1000:int); -exit (go,i); + redo i := iterator.next(1:int,1000:int); +exit i; return bind := b; end bind; # diff --git a/monetdb5/mal/Tests/recycle07.mal b/monetdb5/mal/Tests/recycle07.mal --- a/monetdb5/mal/Tests/recycle07.mal +++ b/monetdb5/mal/Tests/recycle07.mal @@ -3,10 +3,10 @@ function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b:= bat.new(:oid,:int); -barrier (go,i):= language.newRange(0:int); +barrier i:= 0:int; bat.append(b,i); - redo (go,i):= language.nextElement(1:int,1000:int); -exit (go,i); + redo i:= iterator.next(1:int,1000:int); +exit i; return bind:=b; end bind; diff --git a/monetdb5/mal/Tests/recycle07.stable.out b/monetdb5/mal/Tests/recycle07.stable.out --- a/monetdb5/mal/Tests/recycle07.stable.out +++ b/monetdb5/mal/Tests/recycle07.stable.out @@ -24,10 +24,10 @@ stdout of test 'recycle07` in directory #end bind; function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b := bat.new(:oid,:int); -barrier (go,i) := language.newRange(0:int); +barrier i := 0:int; bat.append(b,i); - redo (go,i) := language.nextElement(1:int,1000:int); -exit (go,i); + redo i := iterator.next(1:int,1000:int); +exit i; return bind := b; end bind; # diff --git a/monetdb5/mal/Tests/recycle08.mal b/monetdb5/mal/Tests/recycle08.mal --- a/monetdb5/mal/Tests/recycle08.mal +++ b/monetdb5/mal/Tests/recycle08.mal @@ -3,10 +3,10 @@ function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b:= bat.new(:oid,:int); -barrier (go,i):= language.newRange(0:int); +barrier i:= 0:int; bat.append(b,i); - redo (go,i):= language.nextElement(1:int,1000:int); -exit (go,i); + redo i:= iterator.next(1:int,1000:int); +exit i; return bind:=b; end bind; diff --git a/monetdb5/mal/Tests/recycle08.stable.out b/monetdb5/mal/Tests/recycle08.stable.out --- a/monetdb5/mal/Tests/recycle08.stable.out +++ b/monetdb5/mal/Tests/recycle08.stable.out @@ -24,10 +24,10 @@ stdout of test 'recycle08` in directory #end bind; function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int]; b := bat.new(:oid,:int); -barrier (go,i) := language.newRange(0:int); +barrier i := 0:int; bat.append(b,i); - redo (go,i) := language.nextElement(1:int,1000:int); -exit (go,i); + redo i := iterator.next(1:int,1000:int); +exit i; return bind := b; end bind; # diff --git a/monetdb5/mal/Tests/tst1200.mal b/monetdb5/mal/Tests/tst1200.mal --- a/monetdb5/mal/Tests/tst1200.mal +++ b/monetdb5/mal/Tests/tst1200.mal @@ -38,66 +38,82 @@ mtime.timezone_local(lzone); rule_feb:= mtime.rule("first fRiDaY on or after february 30@01:15"); #var rule_feb := mtime.rule("first fRiDaY on or after february 30@01:15"); # - rule_bat:= bat.new(:str,:zrule,10); + month_bat:= bat.new(:oid,:str,10); + rule_bat:= bat.new(:oid,:zrule,10); #var rule_bat := bat.new(str,rule,10); - bat.insert(rule_bat,"jan",rule_jan); - bat.insert(rule_bat,"feb",rule_feb); - bat.insert(rule_bat,"mar",rule_mar); - bat.insert(rule_bat,"apr",rule_apr); -#rule_bat.bat.insert("jan",rule_jan).insert("feb",rule_feb).insert("mar",rule_mar).insert("apr",rule_apr); - bat.insert(rule_bat,"may",rule_may); - bat.insert(rule_bat,"jun",rule_jun); - bat.insert(rule_bat,"jul",rule_jul); - bat.insert(rule_bat,"aug",rule_aug); -#rule_bat.bat.insert("may",rule_may).insert("jun",rule_jun).insert("jul",rule_jul).insert("aug",rule_aug); - bat.insert(rule_bat,"sep",rule_sep); - bat.insert(rule_bat,"oct",rule_oct); - bat.insert(rule_bat,"nov",rule_nov); - bat.insert(rule_bat,"dec",rule_dec); + bat.append(rule_bat,rule_jan); + bat.append(rule_bat,rule_feb); + bat.append(rule_bat,rule_mar); + bat.append(rule_bat,rule_apr); +#rule_bat.bat.append(rule_apr); + bat.append(rule_bat,rule_may); + bat.append(rule_bat,rule_jun); + bat.append(rule_bat,rule_jul); + bat.append(rule_bat,rule_aug); +#rule_bat.bat.append(rule_aug); + bat.append(rule_bat,rule_sep); + bat.append(rule_bat,rule_oct); + bat.append(rule_bat,rule_nov); + bat.append(rule_bat,rule_dec); + + bat.append(month_bat,"jan"); + bat.append(month_bat,"feb"); + bat.append(month_bat,"mar"); + bat.append(month_bat,"apr"); +#month_bat.bat.append("jan"); + bat.append(month_bat,"may"); + bat.append(month_bat,"jun"); + bat.append(month_bat,"jul"); + bat.append(month_bat,"aug"); +#month_bat.bat.append("may"); + bat.append(month_bat,"sep"); + bat.append(month_bat,"oct"); + bat.append(month_bat,"nov"); + bat.append(month_bat,"dec"); #rule_bat.bat.insert("sep",rule_sep).insert("oct",rule_oct).insert("nov",rule_nov).insert("dec",rule_dec); # ## test the operations on rules ma_a := bat.setColumn(rule_bat,"rule"); #io.print(rule_bat.bat.setColumn("rule"), - na_a:bat[:str,:int] := mal.multiplex("mtime","month",rule_bat); + na_a:bat[:oid,:int] := mal.multiplex("mtime","month",rule_bat); oa_a := bat.setColumn(na_a,"month"); # [month](rule_bat).bat.setColumn("month"), - pa_a:bat[:str,:int] := mal.multiplex("mtime","weekday",rule_bat); + pa_a:bat[:oid,:int] := mal.multiplex("mtime","weekday",rule_bat); qa_a := bat.setColumn(pa_a,"weekday"); # [weekday](rule_bat).bat.setColumn("weekday"), - ra_a:bat[:str,:int] := mal.multiplex("mtime","day",rule_bat); + ra_a:bat[:oid,:int] := mal.multiplex("mtime","day",rule_bat); sa_a := bat.setColumn(ra_a,"day"); # [day](rule_bat).bat.setColumn("day"), - ta_a:bat[:str,:int] := mal.multiplex("mtime","minutes",rule_bat); + ta_a:bat[:oid,:int] := mal.multiplex("mtime","minutes",rule_bat); ua_a := bat.setColumn(ta_a,"minutes"); io.print("rule_bat,na_a,pa_a,ra_a,ta_a"); - va_a := io.print(rule_bat,na_a,pa_a,ra_a,ta_a); + va_a := io.print(month_bat,rule_bat,na_a,pa_a,ra_a,ta_a); # [minutes](rule_bat).bat.setColumn("minutes")); # bat.setColumn(rule_bat,"rule"); #io.print(rule_bat.bat.setColumn("rule"), - xa_a:bat[:str,:date] := mal.multiplex("mtime","compute",rule_bat,2001); + xa_a:bat[:oid,:date] := mal.multiplex("mtime","compute",rule_bat,2001); ya_a := bat.setColumn(xa_a,"2001"); # [compute](rule_bat, 2001).bat.setColumn("2001"), _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list