Changeset: d9b6a4c9abcb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d9b6a4c9abcb
Modified Files:
        monetdb5/mal/Tests/recycle00.mal
        monetdb5/mal/Tests/recycle01.mal
        monetdb5/mal/Tests/recycle02.mal
        monetdb5/mal/Tests/recycle03.mal
        monetdb5/mal/Tests/recycle04.mal
        monetdb5/mal/Tests/recycle05.mal
        monetdb5/mal/Tests/recycle06.mal
        monetdb5/mal/Tests/recycle07.mal
        monetdb5/mal/Tests/recycle08.mal
        monetdb5/mal/Tests/recycle09.mal
        monetdb5/mal/Tests/recycle10.mal
        monetdb5/mal/Tests/recycle11.mal
        monetdb5/mal/Tests/recycle12.mal
        monetdb5/mal/Tests/recycle13.mal
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_recycle.c
        monetdb5/mal/mal_recycle.h
        monetdb5/modules/mal/recycle.c
        monetdb5/modules/mal/recycle.h
        monetdb5/modules/mal/recycle.mal
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_dataflow.h
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_recycler.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/optimizer/optimizer.mal
        sql/test/Tests/setoptimizer.stable.err
        sql/test/Tests/setoptimizer.stable.out
Branch: default
Log Message:

First step in reviving the recycler optimizer.
The recycler code should work with the new SQL generated code base.
Furthermore, we can trim down the number of variations and choose
a single one for production. The recycler tests scripts are mostly
brought into the right shape. Output still has to be validated.


diffs (truncated from 3289 to 300 lines):

diff --git a/monetdb5/mal/Tests/recycle00.mal b/monetdb5/mal/Tests/recycle00.mal
--- a/monetdb5/mal/Tests/recycle00.mal
+++ b/monetdb5/mal/Tests/recycle00.mal
@@ -6,8 +6,9 @@ function qry();
        io.print(j);
 end qry;
 
+optimizer.recycler("user","qry");
+mdb.List("user","qry");
 recycle.setAdmPolicy(1);
-optimizer.recycle("user","qry");
 io.print("start");
 qry();
 io.print("next");
diff --git a/monetdb5/mal/Tests/recycle01.mal b/monetdb5/mal/Tests/recycle01.mal
--- a/monetdb5/mal/Tests/recycle01.mal
+++ b/monetdb5/mal/Tests/recycle01.mal
@@ -1,7 +1,21 @@
 #test the basics of the recycler
-# reusing select results
+#reusing select results
 
-function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
+module sql;
+function sql.mvc():int;
+       return mvc:=1;
+end mvc;
+
+function sql.tid(mvc:int,s:str,t:str):bat[:oid,:oid];
+b:= bat.new(:oid,:oid);
+barrier i:= 0:oid;
+    bat.append(b,i);
+    redo i:= iterator.next(1:oid,11:oid);
+exit i;
+    return tid:= b;
+end tid;
+
+function sql.bind(mvc:int, s:str,t:str,c:str,i:int):bat[:oid,:int];
        b:= bat.new(:oid,:int);
        bat.insert(b,0@0,0);
        bat.insert(b,1@0,1);
@@ -19,13 +33,16 @@ function user.bind(s:str,t:str,c:str,i:i
 end bind;
 
 function qry(low:int, hgh:int);
-       b:= user.bind("schema","table","column",0);
-       s1:= algebra.select(b,low,hgh);
+       m:= sql.mvc();
+       x:bat[:oid,:oid]  := sql.tid(m,"sys","tbl");
+       b:bat[:oid,:int]:= sql.bind(m,"sys","tbl","col",0);
+       s:= algebra.subselect(b,x,low,hgh,true,true,false);
 end qry;
 
 recycle.setAdmPolicy(1);
 recycle.setReusePolicy(1);
-optimizer.recycle("user","qry");
+optimizer.recycler("user","qry");
+mdb.list("user","qry");
 io.print("start");
 qry(1,10);
 io.print("zoom in");
diff --git a/monetdb5/mal/Tests/recycle02.mal b/monetdb5/mal/Tests/recycle02.mal
--- a/monetdb5/mal/Tests/recycle02.mal
+++ b/monetdb5/mal/Tests/recycle02.mal
@@ -1,7 +1,21 @@
 #test the basics of the recycler
 # re-use joins temporal constrainted
 
-function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
+module sql;
+function sql.mvc():int;
+    return mvc:=1;
+end mvc;
+
+function sql.tid(mvc:int,s:str,t:str):bat[:oid,:oid];
+b:= bat.new(:oid,:oid);
+barrier i:= 0:oid;
+    bat.append(b,i);
+    redo i:= iterator.next(1:oid,11:oid);
+exit i;
+    return tid:= b;
+end tid;
+
+function sql.bind(m:int,s:str,t:str,c:str,i:int):bat[:oid,:int];
        b:= bat.new(:oid,:int);
        bat.insert(b,0@0,0);
        bat.insert(b,1@0,1);
@@ -19,17 +33,18 @@ function user.bind(s:str,t:str,c:str,i:i
 end bind;
 
 function qry(low:int, hgh:int);
-       b:= user.bind("schema","table","column",0);
-       s1:= algebra.select(b,low,hgh);
-       m0:= algebra.markT(s1, 0@0);
-       mr:= bat.reverse(m0);
-       j:= algebra.join(mr,s1);
+    m:= sql.mvc();
+    x:bat[:oid,:oid]  := sql.tid(m,"sys","tbl");
+    b:bat[:oid,:int]:= sql.bind(m,"sys","tbl","col",0);
+       s1:= algebra.subselect(b,x,low,hgh,true,true,false);
+       j:= algebra.join(s1,b);
        io.print(j);
 end qry;
 
 recycle.setAdmPolicy(2,2);
 recycle.setReusePolicy(1);
-optimizer.recycle("user","qry");
+optimizer.recycler("user","qry");
+mdb.list("user","qry");
 io.print("start");
 qry(1,10);
 io.print("zoom in");
diff --git a/monetdb5/mal/Tests/recycle03.mal b/monetdb5/mal/Tests/recycle03.mal
--- a/monetdb5/mal/Tests/recycle03.mal
+++ b/monetdb5/mal/Tests/recycle03.mal
@@ -1,7 +1,20 @@
 #test the basics of the recycler
 # re-use joins size constrainted
+module sql;
+function sql.mvc():int;
+    return mvc:=1;
+end mvc;
 
-function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
+function sql.tid(mvc:int,s:str,t:str):bat[:oid,:oid];
+b:= bat.new(:oid,:oid);
+barrier i:= 0:oid;
+    bat.append(b,i);
+    redo i:= iterator.next(1:oid,11:oid);
+exit i;
+    return tid:= b;
+end tid;
+
+function sql.bind(m:int,s:str,t:str,c:str,i:int):bat[:oid,:int];
        b:= bat.new(:oid,:int);
        bat.insert(b,0@0,0);
        bat.insert(b,1@0,1);
@@ -19,17 +32,18 @@ function user.bind(s:str,t:str,c:str,i:i
 end bind;
 
 function qry(low:int, hgh:int);
-       b:= user.bind("schema","table","column",0);
-       s1:= algebra.select(b,low,hgh);
-       m0:= algebra.markT(s1, 0@0);
-       mr:= bat.reverse(m0);
-       j:= algebra.join(mr,s1);
+    m:= sql.mvc();
+    x:bat[:oid,:oid]  := sql.tid(m,"sys","tbl");
+    b:bat[:oid,:int]:= sql.bind(m,"sys","tbl","col",0);
+    s1:= algebra.subselect(b,x,low,hgh,true,true,false);
+    j:= algebra.join(s1,b);
        io.print(j);
 end qry;
 
 recycle.setAdmPolicy(3,1);
 recycle.setReusePolicy(1);
-optimizer.recycle("user","qry");
+optimizer.recycler("user","qry");
+mdb.list("user","qry");
 io.print("start");
 qry(1,10);
 io.print("zoom in");
diff --git a/monetdb5/mal/Tests/recycle04.mal b/monetdb5/mal/Tests/recycle04.mal
--- a/monetdb5/mal/Tests/recycle04.mal
+++ b/monetdb5/mal/Tests/recycle04.mal
@@ -1,7 +1,20 @@
 #test the basics of the recycler
 #check retention of function calls
+module sql;
+function sql.mvc():int;
+    return mvc:=1;
+end mvc;
 
-function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
+function sql.tid(mvc:int,s:str,t:str):bat[:oid,:oid];
+b:= bat.new(:oid,:oid);
+barrier i:= 0:oid;
+    bat.append(b,i);
+    redo i:= iterator.next(1:oid,11:oid);
+exit i;
+    return tid:= b;
+end tid;
+
+function sql.bind(m:int,s:str,t:str,c:str,i:int):bat[:oid,:int];
        b:= bat.new(:oid,:int);
        bat.insert(b,0@0,0);
        bat.insert(b,1@0,1);
@@ -18,9 +31,11 @@ function user.bind(s:str,t:str,c:str,i:i
        return bind:=b;
 end bind;
 
-function qry(low:int, hgh:int):bat[:oid,:int];
-       b:= user.bind("schema","table","column",0);
-       s1:= algebra.select(b,low,hgh);
+function qry(low:int, hgh:int);
+    m:= sql.mvc();
+    x:bat[:oid,:oid]  := sql.tid(m,"sys","tbl");
+    b:bat[:oid,:int]:= sql.bind(m,"sys","tbl","col",0);
+    s1:= algebra.subselect(b,x,low,hgh,true,true,false);
        return qry:=s1;
 end qry;
 
@@ -30,8 +45,8 @@ function tst();
        qry(1,10);
 end tst;
 
-optimizer.recycle("user","qry");
-optimizer.recycle("user","tst");
+optimizer.recycler("user","qry");
+optimizer.recycler("user","tst");
 mdb.List("user","qry");
 mdb.List("user","tst");
 recycle.setReusePolicy(2);
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
@@ -1,6 +1,19 @@
 # Test of LRU cache policy in limited memory (12 RU)
+module sql;
+function sql.mvc():int;
+    return mvc:=1;
+end mvc;
 
-function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
+function sql.tid(mvc:int,s:str,t:str):bat[:oid,:oid];
+b:= bat.new(:oid,:oid);
+barrier i:= 0:oid;
+    bat.append(b,i);
+    redo i:= iterator.next(1:oid,1000:oid);
+exit i;
+    return tid:= b;
+end tid;
+
+function sql.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
 b:= bat.new(:oid,:int);
 barrier i:= 0:int;
        bat.append(b,i);
@@ -10,16 +23,17 @@ return bind:=b;
 end bind;
 
 function qry(low:int, hgh:int);
-       b:= user.bind("schema","table","column",0);
+    m:= sql.mvc();
+    x:bat[:oid,:oid]  := sql.tid(m,"sys","tbl");
+    b:bat[:oid,:int]:= sql.bind(m,"sys","tbl","col",0);
+    s1:= algebra.subselect(b,x,low,hgh,true,true,false);
        s1:= algebra.select(b,low,hgh);
-       m0:= algebra.markT(s1, 0@0);
-       mr:= bat.reverse(m0);
 end qry;
 
 recycle.setAdmPolicy(1);
 recycle.setReusePolicy(1);
 recycle.setCachePolicy(1,10,12);
-optimizer.recycle("user","qry");
+optimizer.recycle.("user","qry");
 
 io.print("start");
 qry(100,120);
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
@@ -1,6 +1,19 @@
 # Test of LRU cache policy in limited cache (10 lines, 1 is always taken by 
fake 0)
+module sql;
+function sql.mvc():int;
+    return mvc:=1;
+end mvc; 
+    
+function sql.tid(mvc:int,s:str,t:str):bat[:oid,:oid];
+b:= bat.new(:oid,:oid);
+barrier i:= 0:oid;
+       bat.append(b,i);
+       redo i:= iterator.next(1:oid,1000:oid);
+exit i;
+    return tid:= b;
+end tid;
 
-function user.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
+function sql.bind(s:str,t:str,c:str,i:int):bat[:oid,:int];
 b:= bat.new(:oid,:int);
 barrier i:= 0:int;
        bat.append(b,i);
@@ -10,16 +23,16 @@ return bind:=b;
 end bind;
 
 function qry(low:int, hgh:int);
-       b:= user.bind("schema","table","column",0);
-       s1:= algebra.select(b,low,hgh);
-       m0:= algebra.markT(s1, 0@0);
-       mr:= bat.reverse(m0);
+    m:= sql.mvc();
+    x:bat[:oid,:oid]  := sql.tid(m,"sys","tbl");
+    b:bat[:oid,:int]:= sql.bind(m,"sys","tbl","col",0);
+    s1:= algebra.subselect(b,x,low,hgh,true,true,false);
 end qry;
 
 recycle.setAdmPolicy(1);
 recycle.setReusePolicy(1);
 recycle.setCachePolicy(1,9);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to