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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list