Changeset: d7c12fd094bc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d7c12fd094bc
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        monetdb5/optimizer/Makefile.ag
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/optimizer/optimizer.mal
        sql/test/Tests/setoptimizer.stable.out
Branch: default
Log Message:

Added empty framework for new optimizer


diffs (183 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -8194,6 +8194,8 @@ Ready.
 [ "optimizer", "optimize",     "pattern optimizer.optimize(mod:str, 
fcn:str):void ",   "QOToptimize;", "Optimize a specific operation" ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(mod:str, fcn:str, 
targetmod:str, targetfcn:str):void ",        "OPTorcam;",    "Inverse macro, 
find pattern and replace with a function call." ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(targetmod:str, 
targetfcn:str):void ",  "OPTorcam;",    "Inverse macro processor for current 
function"  ]
+[ "optimizer", "postfix",      "pattern optimizer.postfix():str ",     
"OPTwrapper;",  ""      ]
+[ "optimizer", "postfix",      "pattern optimizer.postfix(mod:str, 
fcn:str):str ",     "OPTwrapper;",  "Postfix the plan,e.g. pushing projections" 
    ]
 [ "optimizer", "prelude",      "pattern optimizer.prelude():void ",    
"optimizer_prelude;",   "Initialize the optimizer"      ]
 [ "optimizer", "profiler",     "pattern optimizer.profiler():str ",    
"OPTwrapper;",  ""      ]
 [ "optimizer", "profiler",     "pattern optimizer.profiler(mod:str, 
fcn:str):str ",    "OPTwrapper;",  "Collect properties for the profiler"   ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -10556,6 +10556,8 @@ Ready.
 [ "optimizer", "optimize",     "pattern optimizer.optimize(mod:str, 
fcn:str):void ",   "QOToptimize;", "Optimize a specific operation" ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(mod:str, fcn:str, 
targetmod:str, targetfcn:str):void ",        "OPTorcam;",    "Inverse macro, 
find pattern and replace with a function call." ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(targetmod:str, 
targetfcn:str):void ",  "OPTorcam;",    "Inverse macro processor for current 
function"  ]
+[ "optimizer", "postfix",      "pattern optimizer.postfix():str ",     
"OPTwrapper;",  ""      ]
+[ "optimizer", "postfix",      "pattern optimizer.postfix(mod:str, 
fcn:str):str ",     "OPTwrapper;",  "Postfix the plan,e.g. pushing projections" 
    ]
 [ "optimizer", "prelude",      "pattern optimizer.prelude():void ",    
"optimizer_prelude;",   "Initialize the optimizer"      ]
 [ "optimizer", "profiler",     "pattern optimizer.profiler():str ",    
"OPTwrapper;",  ""      ]
 [ "optimizer", "profiler",     "pattern optimizer.profiler(mod:str, 
fcn:str):str ",    "OPTwrapper;",  "Collect properties for the profiler"   ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1579,6 +1579,7 @@ str OPTmultiplexSimple(Client cntxt, Mal
 str OPToltpImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str OPTorcam(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str OPTorcamImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
+str OPTpostfixImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTprofilerImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTprojectionpathImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTpushselectImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -55,8 +55,8 @@ Ready.
 % .L1 # table_name
 % def # name
 % clob # type
-% 519 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.garbageCollector();"
    ]
+% 539 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();"
        ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
@@ -114,8 +114,8 @@ end user.s10_1;
 % .L1 # table_name
 % def # name
 % clob # type
-% 542 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.sql_append();optimizer.garbageCollector();"
     ]
+% 562 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.wlc();optimizer.sql_append();optimizer.garbageCollector();"
 ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
diff --git a/monetdb5/optimizer/Makefile.ag b/monetdb5/optimizer/Makefile.ag
--- a/monetdb5/optimizer/Makefile.ag
+++ b/monetdb5/optimizer/Makefile.ag
@@ -51,6 +51,7 @@ lib_optimizer = {
                opt_support.c opt_support.h \
                opt_pushselect.c opt_pushselect.h \
                opt_profiler.c opt_profiler.h \
+               opt_postfix.c opt_postfix.h \
                opt_volcano.c opt_volcano.h \
                opt_wrapper.c
 }
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -89,6 +89,7 @@ static struct PIPELINES {
         "optimizer.generator();"
         "optimizer.profiler();"
         "optimizer.candidates();"
+        "optimizer.postfix();"
 //      "optimizer.jit();" awaiting the new batcalc api
 //      "optimizer.oltp();"awaiting the autocommit front-end changes
         "optimizer.wlc();"
@@ -124,6 +125,7 @@ static struct PIPELINES {
         "optimizer.volcano();"
         "optimizer.profiler();"
         "optimizer.candidates();"
+        "optimizer.postfix();"
 //      "optimizer.jit();" awaiting the new batcalc api
 //      "optimizer.oltp();"awaiting the autocommit front-end changes
         "optimizer.wlc();"
@@ -164,6 +166,7 @@ static struct PIPELINES {
         "optimizer.generator();"
         "optimizer.profiler();"
         "optimizer.candidates();"
+        "optimizer.postfix();"
 //      "optimizer.jit();" awaiting the new batcalc api
 //      "optimizer.oltp();"awaiting the autocommit front-end changes
         "optimizer.wlc();"
@@ -203,6 +206,7 @@ static struct PIPELINES {
         "optimizer.generator();"
         "optimizer.profiler();"
         "optimizer.candidates();"
+        "optimizer.postfix();"
 //      "optimizer.jit();" awaiting the new batcalc api
 //      "optimizer.oltp();"awaiting the autocommit front-end changes
         "optimizer.wlc();"
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -49,6 +49,7 @@ struct OPTcatalog {
 {"mitosis",            0,      0,      0},
 {"multiplex",  0,      0,      0},
 {"oltp",               0,      0,      0},
+{"postfix",            0,      0,      0},
 {"reduce",             0,      0,      0},
 {"remap",              0,      0,      0},
 {"remote",             0,      0,      0},
diff --git a/monetdb5/optimizer/opt_wrapper.c b/monetdb5/optimizer/opt_wrapper.c
--- a/monetdb5/optimizer/opt_wrapper.c
+++ b/monetdb5/optimizer/opt_wrapper.c
@@ -38,6 +38,7 @@
 #include "opt_matpack.h"
 #include "opt_json.h"
 #include "opt_oltp.h"
+#include "opt_postfix.h"
 #include "opt_mergetable.h"
 #include "opt_mitosis.h"
 #include "opt_multiplex.h"
@@ -77,7 +78,7 @@ struct{
        {"mitosis", &OPTmitosisImplementation,0,0},
        {"multiplex", &OPTmultiplexImplementation,0,0},
        {"oltp", &OPToltpImplementation,0,0},
-       {"wlc", &OPTwlcImplementation,0,0},
+       {"postfix", &OPTpostfixImplementation,0,0},
        {"profiler", &OPTprofilerImplementation,0,0},
        {"projectionpath", &OPTprojectionpathImplementation,0,0},
        {"pushselect", &OPTpushselectImplementation,0,0},
@@ -87,6 +88,7 @@ struct{
        {"remoteQueries", &OPTremoteQueriesImplementation,0,0},
        {"reorder", &OPTreorderImplementation,0,0},
        {"volcano", &OPTvolcanoImplementation,0,0},
+       {"wlc", &OPTwlcImplementation,0,0},
        {0,0,0,0}
 };
 mal_export str OPTwrapper(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
diff --git a/monetdb5/optimizer/optimizer.mal b/monetdb5/optimizer/optimizer.mal
--- a/monetdb5/optimizer/optimizer.mal
+++ b/monetdb5/optimizer/optimizer.mal
@@ -273,5 +273,13 @@ pattern optimizer.wlc(mod:str, fcn:str):
 address OPTwrapper
 comment "Inject the workload capture-replay primitives.";
 
+#opt_postfix.mal
+
+pattern optimizer.postfix():str
+address OPTwrapper;
+pattern optimizer.postfix(mod:str, fcn:str):str
+address OPTwrapper
+comment "Postfix the plan,e.g. pushing projections";
+
 optimizer.prelude();
 
diff --git a/sql/test/Tests/setoptimizer.stable.out 
b/sql/test/Tests/setoptimizer.stable.out
--- a/sql/test/Tests/setoptimizer.stable.out
+++ b/sql/test/Tests/setoptimizer.stable.out
@@ -64,12 +64,12 @@ Ready.
 % .L1, .L1,    .L1 # table_name
 % name,        def,    status # name
 % clob,        clob,   clob # type
-% 15,  580,    6 # length
+% 15,  600,    6 # length
 [ "minimal_pipe",      
"optimizer.inline();optimizer.remap();optimizer.deadcode();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.garbageCollector();",
      "stable"        ]
-[ "default_pipe",      
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.garbageCollector();",
     "stable"        ]
-[ "volcano_pipe",      
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.volcano();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.garbageCollector();",
 "stable"        ]
-[ "no_mitosis_pipe",   
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.garbageCollector();",
 "stable"        ]
-[ "sequential_pipe",   
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.wlc();optimizer.garbageCollector();",
      "stable"        ]
+[ "default_pipe",      
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();",
 "stable"        ]
+[ "volcano_pipe",      
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.volcano();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();",
     "stable"        ]
+[ "no_mitosis_pipe",   
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();",
     "stable"        ]
+[ "sequential_pipe",   
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();",
  "stable"        ]
 
 # 02:57:35 >  
 # 02:57:35 >  "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to