Changeset: 41fa26949a66 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=41fa26949a66
Modified Files:
monetdb5/optimizer/Tests/tst4631.stable.out
monetdb5/optimizer/opt_centipede.c
monetdb5/optimizer/opt_wrapper.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_scenario.c
Branch: default
Log Message:
Merge with Feb2013 branch.
diffs (175 lines):
diff --git a/monetdb5/optimizer/Tests/tst4631.stable.out
b/monetdb5/optimizer/Tests/tst4631.stable.out
--- a/monetdb5/optimizer/Tests/tst4631.stable.out
+++ b/monetdb5/optimizer/Tests/tst4631.stable.out
@@ -149,17 +149,17 @@ function user.qry1():void;
V40 := algebra.sort(V39); # 20 V40:bat[:oid,:bit] :=
ALGhsort(V39:bat[:oid,:bit]) {G}
V48 := algebra.join(V34,V31); # 21 V48:bat[:oid,:bit] :=
ALGjoin(V34:bat[:oid,:oid], V31:bat[:oid,:bit]) {G}
V49 := group.refine(V40,V48); # 22 V49:bat[:oid,:oid] :=
GRPrefine(V40:bat[:oid,:bit], V48:bat[:oid,:bit]) {G}
- V50:bat[:oid,:int] := user.bind("sys","lineitem","l_quantity",0);# 23
V50:bat[:oid,:int] := user.bind(_40:str, _41:str, _49:str, _42:int) {G}
+ V50:bat[:oid,:int] := user.bind("sys","lineitem","l_quantity",0);# 23
V50:bat[:oid,:int] := user.bind(_2:str, _3:str, _49:str, _5:int) {G}
V54 := algebra.kdifference(V50,V9); # 24 V54:bat[:oid,:int] :=
ALGkdiff(V50:bat[:oid,:int], V9:bat[:oid,:oid]) {G}
V55 := algebra.join(V18,V54); # 25 V55:bat[:oid,:int] :=
ALGjoin(V18:bat[:oid,:oid], V54:bat[:oid,:int]) {G}
V56 := aggr.sum(V55,V32,V34); # 26 V56:bat[:oid,:lng] :=
AGGRsum3_lng(V55:bat[:oid,:int], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
- V57:bat[:oid,:flt] := user.bind("sys","lineitem","l_extendedprice",0);#
27 V57:bat[:oid,:flt] := user.bind(_40:str, _41:str, _56:str, _42:int) {G}
+ V57:bat[:oid,:flt] := user.bind("sys","lineitem","l_extendedprice",0);#
27 V57:bat[:oid,:flt] := user.bind(_2:str, _3:str, _56:str, _5:int) {G}
V61 := algebra.kdifference(V57,V9); # 28 V61:bat[:oid,:flt] :=
ALGkdiff(V57:bat[:oid,:flt], V9:bat[:oid,:oid]) {G}
V62 := algebra.join(V18,V61); # 29 V62:bat[:oid,:flt] :=
ALGjoin(V18:bat[:oid,:oid], V61:bat[:oid,:flt]) {G}
V63 := aggr.sum(V62,V32,V34); # 30 V63:bat[:oid,:dbl] :=
AGGRsum3_dbl(V62:bat[:oid,:flt], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
V69 := calc.lng(1); # 31 V69:lng := CMDvarCONVERT(_67:int)
V71 := calc.*(V69,100); # 32 V71:lng :=
CMDvarMULsignal(V69:lng, _69:int)
- V72:bat[:oid,:flt] := user.bind("sys","lineitem","l_discount",0);# 33
V72:bat[:oid,:flt] := user.bind(_40:str, _41:str, _71:str, _42:int) {G}
+ V72:bat[:oid,:flt] := user.bind("sys","lineitem","l_discount",0);# 33
V72:bat[:oid,:flt] := user.bind(_2:str, _3:str, _71:str, _5:int) {G}
V79 := algebra.kdifference(V72,V9); # 34 V79:bat[:oid,:flt] :=
ALGkdiff(V72:bat[:oid,:flt], V9:bat[:oid,:oid]) {G}
V80 := algebra.join(V18,V79); # 35 V80:bat[:oid,:flt] :=
ALGjoin(V18:bat[:oid,:oid], V79:bat[:oid,:flt]) {G}
V81:bat[:oid,:flt] := mal.multiplex("calc","-",V71,V80);# 36
V81:bat[:oid,:flt] := OPTremapMultiplex(_80:str, _81:str, V71:lng,
V80:bat[:oid,:flt]) {G}
@@ -167,7 +167,7 @@ function user.qry1():void;
V85 := aggr.sum(V83,V32,V34); # 38 V85:bat[:oid,:dbl] :=
AGGRsum3_dbl(V83:bat[:oid,:flt], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
V96:bat[:oid,:flt] := mal.multiplex("calc","-",V71,V80);# 39
V96:bat[:oid,:flt] := OPTremapMultiplex(_80:str, _81:str, V71:lng,
V80:bat[:oid,:flt]) {G}
V97 := batcalc.*(V62,V96); # 40 V97:bat[:oid,:flt] :=
CMDbatMULsignal(V62:bat[:oid,:flt], V96:bat[:oid,:flt]) {G}
- V100:bat[:oid,:flt] := user.bind("sys","lineitem","l_tax",0);# 41
V100:bat[:oid,:flt] := user.bind(_73:str, _74:str, _99:str, _75:int) {G}
+ V100:bat[:oid,:flt] := user.bind("sys","lineitem","l_tax",0);# 41
V100:bat[:oid,:flt] := user.bind(_2:str, _3:str, _99:str, _5:int) {G}
V104 := algebra.kdifference(V100,V9);# 42 V104:bat[:oid,:flt] :=
ALGkdiff(V100:bat[:oid,:flt], V9:bat[:oid,:oid]) {G}
V105 := algebra.join(V18,V104); # 43 V105:bat[:oid,:flt] :=
ALGjoin(V18:bat[:oid,:oid], V104:bat[:oid,:flt]) {G}
V106:bat[:oid,:flt] := mal.multiplex("calc","+",V71,V105);# 44
V106:bat[:oid,:flt] := OPTremapMultiplex(_80:str, _105:str, V71:lng,
V105:bat[:oid,:flt]) {G}
@@ -175,9 +175,9 @@ function user.qry1():void;
V109 := aggr.sum(V108,V32,V34); # 46 V109:bat[:oid,:dbl] :=
AGGRsum3_dbl(V108:bat[:oid,:flt], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
V117 := aggr.avg(V55,V32,V34); # 47 V117:bat[:oid,:dbl] :=
AGGRavg13_dbl(V55:bat[:oid,:int], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
V122 := aggr.avg(V62,V32,V34); # 48 V122:bat[:oid,:dbl] :=
AGGRavg13_dbl(V62:bat[:oid,:flt], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
- V124:bat[:oid,:int] := mal.multiplex("calc","round",V122,100);# 49
V124:bat[:oid,:int] := OPTremapMultiplex(_122:str, _123:str,
V122:bat[:oid,:dbl], _124:int) {G}
+ V124:bat[:oid,:int] := mal.multiplex("calc","round",V122,100);# 49
V124:bat[:oid,:int] := OPTremapMultiplex(_80:str, _123:str,
V122:bat[:oid,:dbl], _69:int) {G}
V130 := aggr.avg(V80,V32,V34); # 50 V130:bat[:oid,:dbl] :=
AGGRavg13_dbl(V80:bat[:oid,:flt], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
- V131 := mal.multiplex("calc","round",V130,100);# 51 V131:any :=
OPTremapMultiplex(_122:str, _123:str, V130:bat[:oid,:dbl], _124:int) {G}
+ V131 := mal.multiplex("calc","round",V130,100);# 51 V131:any :=
OPTremapMultiplex(_80:str, _123:str, V130:bat[:oid,:dbl], _69:int) {G}
V132 := aggr.count(V32,V32,V34); # 52 V132:bat[:oid,:wrd] :=
AGGRcount3nils(V32:bat[:oid,:oid], V32:bat[:oid,:oid], V34:bat[:oid,:oid]) {G}
end qry1; # 53
#optimizer.aliases actions= 0 time=18 usec
diff --git a/monetdb5/optimizer/opt_centipede.c
b/monetdb5/optimizer/opt_centipede.c
--- a/monetdb5/optimizer/opt_centipede.c
+++ b/monetdb5/optimizer/opt_centipede.c
@@ -255,7 +255,6 @@ OPTexecController(Client cntxt, MalBlkPt
//printFunction(cntxt->fdout, cmb, 0, LIST_MAL_STMT);
#endif
- //optimizeMALBlock(cntxt, cmb);
chkProgram(cntxt->fdout, cntxt->nspace, cmb);
#ifdef _DEBUG_OPT_CENTIPEDE_
mnstr_printf(cntxt->fdout,"#rough cntrl plan %d \n", cmb->errors);
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
@@ -39,12 +39,12 @@ All Rights Reserved.
*/
#include "opt_accumulators.h"
#include "opt_aliases.h"
+#include "opt_centipede.h"
#include "opt_cluster.h"
#include "opt_coercion.h"
-#include "opt_centipede.h"
-#include "opt_cluster.h"
#include "opt_commonTerms.h"
#include "opt_compression.h"
+#include "opt_constants.h"
#include "opt_costModel.h"
#include "opt_dataflow.h"
#include "opt_deadcode.h"
@@ -61,12 +61,13 @@ All Rights Reserved.
#include "opt_mergetable.h"
#include "opt_mitosis.h"
#include "opt_multiplex.h"
+#include "opt_octopus.h"
#include "opt_origin.h"
-#include "opt_octopus.h"
#include "opt_prejoin.h"
#include "opt_pushranges.h"
+#include "opt_pushselect.h"
+#include "opt_qep.h"
#include "opt_querylog.h"
-#include "opt_qep.h"
#include "opt_recycler.h"
#include "opt_reduce.h"
#include "opt_remap.h"
@@ -74,7 +75,6 @@ All Rights Reserved.
#include "opt_reorder.h"
#include "opt_statistics.h"
#include "opt_strengthReduction.h"
-#include "opt_pushselect.h"
struct{
str nme;
@@ -87,15 +87,17 @@ struct{
{"coercions", &OPTcoercionImplementation},
{"commonTerms", &OPTcommonTermsImplementation},
{"compression", &OPTcompressionImplementation},
+ {"constants", &OPTconstantsImplementation},
{"costModel", &OPTcostModelImplementation},
{"dataflow", &OPTdataflowImplementation},
{"deadcode", &OPTdeadcodeImplementation},
{"dictionary", &OPTdictionaryImplementation},
+ {"dumpQEP", &OPTdumpQEPImplementation},
{"emptySet", &OPTemptySetImplementation},
{"evaluate", &OPTevaluateImplementation},
{"factorize", &OPTfactorizeImplementation},
+ {"garbageCollector", &OPTgarbageCollectorImplementation},
{"groups", &OPTgroupsImplementation},
- {"garbageCollector", &OPTgarbageCollectorImplementation},
{"inline", &OPTinlineImplementation},
{"joinPath", &OPTjoinPathImplementation},
{"mapreduce", &OPTmapreduceImplementation},
@@ -107,15 +109,14 @@ struct{
{"origin", &OPToriginImplementation},
{"prejoin", &OPTprejoinImplementation},
{"pushranges", &OPTpushrangesImplementation},
+ {"pushselect", &OPTpushselectImplementation},
{"querylog", &OPTquerylogImplementation},
- {"dumpQEP", &OPTdumpQEPImplementation},
{"recycle", &OPTrecyclerImplementation},
{"reduce", &OPTreduceImplementation},
{"remap", &OPTremapImplementation},
{"remoteQueries", &OPTremoteQueriesImplementation},
{"reorder", &OPTreorderImplementation},
{"strengthReduction", &OPTstrengthReductionImplementation},
- {"pushselect", &OPTpushselectImplementation},
{0,0}
};
opt_export str OPTwrapper(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
p);
diff --git a/sql/backends/monet5/sql_optimizer.c
b/sql/backends/monet5/sql_optimizer.c
--- a/sql/backends/monet5/sql_optimizer.c
+++ b/sql/backends/monet5/sql_optimizer.c
@@ -261,6 +261,7 @@ addQueryToCache(Client c)
mvc *m;
ValRecord *val;
backend *be;
+ str msg = 0;
be = (backend *) c->sqlcontext;
assert( be && be->mvc ); /* SQL clients should always have their
state set */
@@ -294,7 +295,12 @@ addQueryToCache(Client c)
SQLgetStatistics(c,m,mb);
if ( m->emod & mod_debug )
addtoMalBlkHistory(mb,"getStatistics");
- optimizeMALBlock(c,mb);
+
+ msg = optimizeMALBlock(c,mb);
+ if (msg != MAL_SUCCEED) {
+ showScriptException(c->fdout, mb, 0, MAL, "%s", msg);
+ return;
+ }
/* time to execute the optimizers */
if( c->debug)
diff --git a/sql/backends/monet5/sql_scenario.c
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -1690,7 +1690,11 @@ SQLparser(Client c)
mb = c->curprg->def;
chkProgram(c->fdout, c->nspace, mb);
addOptimizerPipe(c, mb, "minimal_pipe");
- optimizeMALBlock(c, mb);
+ msg = optimizeMALBlock(c, mb);
+ if (msg != MAL_SUCCEED) {
+ sqlcleanup(m, err);
+ goto finalize;
+ }
c->curprg->def = mb;
} else {
err = 1;
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list