Changeset: 87b88f06102d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=87b88f06102d Removed Files: monetdb5/optimizer/opt_accumulators.c monetdb5/optimizer/opt_accumulators.h Modified Files: clients/Tests/exports.stable.out monetdb5/modules/mal/Tests/remote12.stable.out monetdb5/optimizer/Makefile.ag monetdb5/optimizer/opt_support.c monetdb5/optimizer/opt_support.h monetdb5/optimizer/opt_wrapper.c monetdb5/optimizer/optimizer.mal sql/backends/monet5/Tests/optimizers.sql sql/backends/monet5/Tests/optimizers.stable.err sql/test/setoptimizer.sql Branch: default Log Message:
Drop accumulator optimizer The underlying accumulator implementation has been dropped some time ago already. diffs (truncated from 395 to 300 lines): 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 @@ -1598,7 +1598,6 @@ str MTIMEtzone_get_local(tzone *z); str MTIMEtzone_set_local(void *res, const tzone *z); str MTIMEtzone_tostr(str *s, const tzone *ret); str MTIMEunix_epoch(timestamp *ret); -int OPTaccumulatorsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); void OPTaliasRemap(InstrPtr p, int *alias); int OPTaliasesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); int OPTcoercionImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/monetdb5/modules/mal/Tests/remote12.stable.out b/monetdb5/modules/mal/Tests/remote12.stable.out --- a/monetdb5/modules/mal/Tests/remote12.stable.out +++ b/monetdb5/modules/mal/Tests/remote12.stable.out @@ -27,6 +27,7 @@ function user.main():void; io.print(v); mdb.var(); end user.main; +!MALException:remote.put:unsupported type: BAT diff --git a/monetdb5/optimizer/Makefile.ag b/monetdb5/optimizer/Makefile.ag --- a/monetdb5/optimizer/Makefile.ag +++ b/monetdb5/optimizer/Makefile.ag @@ -18,7 +18,6 @@ lib_optimizer = { NOINST SOURCES = \ optimizer.c optimizer.h optimizer_private.h \ - opt_accumulators.c opt_accumulators.h \ opt_aliases.c opt_aliases.h \ opt_coercion.c opt_coercion.h \ opt_commonTerms.c opt_commonTerms.h \ diff --git a/monetdb5/optimizer/opt_accumulators.c b/monetdb5/optimizer/opt_accumulators.c deleted file mode 100644 --- a/monetdb5/optimizer/opt_accumulators.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * Copyright 2008-2015 MonetDB B.V. - */ - -/* - * [NOTE the accumulator optimizer is known to produce - * problems due to concurrent access to the BATs. - * However, the last instruction for a BAT is now scheduled only - * when all other uses have finished. - * - * The accumulator can be installed just before garbage collector, - * because the other modules do not recognize batcalc operations with - * more arguments.] - */ -#include "monetdb_config.h" -#include "opt_accumulators.h" -#include "mal_builder.h" - -int -OPTaccumulatorsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) -{ - int i, limit,slimit; - InstrPtr p,q; - Module scope = cntxt->nspace; - int actions = 0; - InstrPtr *old; - Lifespan span; - - (void) pci; - (void) stk; /* to fool compilers */ - span = setLifespan(mb); - if( span == NULL) - return 0; - old= mb->stmt; - limit= mb->stop; - slimit= mb->ssize; - if ( newMalBlkStmt(mb,mb->stop) < 0){ - GDKfree(span); - return 0; - } - for (i = 0; i < limit; i++) { - p = old[i]; - - if( getModuleId(p) != batcalcRef ) { - pushInstruction(mb,p); - continue; - } - OPTDEBUGaccumulators - printInstruction(cntxt->fdout, mb, 0, p, LIST_MAL_ALL); - if (p->retc==1 && p->argc == 2) { - /* unary operation, avoid clash with binary */ - pushInstruction(mb,p); - continue; - } - if( getLastUpdate(span,getArg(p,0)) != i ) { - /* only consider the last update to this variable */ - pushInstruction(mb,p); - continue; - } - - if (p->retc==1 && p->argc == 3 && isaBatType(getArgType(mb,p,0))) { - int b1 =getEndLifespan(span,getArg(p,1))<=i && getArgType(mb,p,1) == getArgType(mb,p,0); - int b2 =getEndLifespan(span,getArg(p,2))<=i && getArgType(mb,p,2) == getArgType(mb,p,0) ; - if ( b1 == 0 && b2 == 0){ - pushInstruction(mb,p); - continue; - } - /* binary/unary operation, check arguments for being candidates */ - q= copyInstruction(p); - p= pushBit(mb,p, b1); - p= pushBit(mb,p, b2); - - typeChecker(cntxt->fdout, scope, mb, p, TRUE); - if (mb->errors || p->typechk == TYPE_UNKNOWN) { - OPTDEBUGaccumulators{ - mnstr_printf(cntxt->fdout,"# Failed typecheck"); - printInstruction(cntxt->fdout, mb, 0, p, LIST_MAL_ALL); - } - /* reset instruction error buffer */ - cntxt->errbuf[0]=0; - mb->errors = 0; - freeInstruction(p); - p=q; /* restore */ - } else { - OPTDEBUGaccumulators{ - mnstr_printf(cntxt->fdout, "#Found accumulation candidate "); - mnstr_printf(cntxt->fdout, "%d: %d(%d)\n", i, getArg(p,0),getArg(p,2)); - printInstruction(cntxt->fdout, mb, 0, p, LIST_MAL_ALL); - } - freeInstruction(q); - actions++; - } - OPTDEBUGaccumulators - printInstruction(cntxt->fdout, mb, 0, p, LIST_MAL_ALL); - } - pushInstruction(mb,p); - } - for (i = limit; i<slimit; i++) - if(old[i]) - freeInstruction(old[i]); - GDKfree(old); - GDKfree(span); - return actions; -} diff --git a/monetdb5/optimizer/opt_accumulators.h b/monetdb5/optimizer/opt_accumulators.h deleted file mode 100644 --- a/monetdb5/optimizer/opt_accumulators.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * Copyright 2008-2015 MonetDB B.V. - */ - -#ifndef _OPT_ACCUMULATORS_ -#define _OPT_ACCUMULATORS_ -#include "opt_prelude.h" -#include "opt_support.h" -#include "mal_interpreter.h" - -opt_export int OPTaccumulatorsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); - -#define OPTDEBUGaccumulators if ( optDebug & ((lng)1 <<DEBUG_OPT_ACCUMULATORS) ) - -#endif 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 @@ -129,7 +129,6 @@ struct OPTcatalog { int actions; int debug; } optcatalog[]= { -{"accumulators",0, 0, 0, DEBUG_OPT_ACCUMULATORS}, {"aliases", 0, 0, 0, DEBUG_OPT_ALIASES}, {"coercions", 0, 0, 0, DEBUG_OPT_COERCION}, {"commonTerms", 0, 0, 0, DEBUG_OPT_COMMONTERMS}, diff --git a/monetdb5/optimizer/opt_support.h b/monetdb5/optimizer/opt_support.h --- a/monetdb5/optimizer/opt_support.h +++ b/monetdb5/optimizer/opt_support.h @@ -66,7 +66,6 @@ #define DEBUG_OPT_HISTORY 40 #define DEBUG_OPT_MITOSIS 41 #define DEBUG_OPT_MULTIPLEX 42 -#define DEBUG_OPT_ACCUMULATORS 43 #define DEBUG_OPT_SELCRACK 46 #define DEBUG_OPT_SIDCRACK 47 #define DEBUG_OPT_TRACE 48 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 @@ -26,7 +26,6 @@ /* * The optimizer used so far */ -#include "opt_accumulators.h" #include "opt_aliases.h" #include "opt_coercion.h" #include "opt_commonTerms.h" @@ -59,7 +58,6 @@ struct{ str nme; int (*fcn)(); } codes[] = { - {"accumulators", &OPTaccumulatorsImplementation}, {"aliases", &OPTaliasesImplementation}, {"coercions", &OPTcoercionImplementation}, {"commonTerms", &OPTcommonTermsImplementation}, diff --git a/monetdb5/optimizer/optimizer.mal b/monetdb5/optimizer/optimizer.mal --- a/monetdb5/optimizer/optimizer.mal +++ b/monetdb5/optimizer/optimizer.mal @@ -6,12 +6,6 @@ module optimizer; -pattern optimizer.accumulators():str -address OPTwrapper; -pattern optimizer.accumulators(mod:str, fcn:str):str -address OPTwrapper -comment "Replace calculations with accumulator model"; - #opt_aliases.mal pattern optimizer.aliases():str diff --git a/sql/backends/monet5/Tests/optimizers.sql b/sql/backends/monet5/Tests/optimizers.sql --- a/sql/backends/monet5/Tests/optimizers.sql +++ b/sql/backends/monet5/Tests/optimizers.sql @@ -13,19 +13,19 @@ select 'optimizer on test:',optimizer; set optimizer=''; select 'optimizer <empty> test:',optimizer; -set optimizer='optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; -set optimizer='optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; -set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; -set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; -set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; -set optimizer='optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; -set optimizer='optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; set optimizer='optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; @@ -35,9 +35,9 @@ set optimizer='optimizer.reduce();optimi set optimizer='optimizer.garbageCollector();'; -set optimizer='optimizer.costModel();optimizer.coercions();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +set optimizer='optimizer.costModel();optimizer.coercions();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; -set optimizer='optimizer.costModel();optimizer.coercions();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.garbageCollector();'; +set optimizer='optimizer.costModel();optimizer.coercions();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.garbageCollector();'; set optimizer='optimizer.inline();'; diff --git a/sql/backends/monet5/Tests/optimizers.stable.err b/sql/backends/monet5/Tests/optimizers.stable.err --- a/sql/backends/monet5/Tests/optimizers.stable.err +++ b/sql/backends/monet5/Tests/optimizers.stable.err @@ -30,76 +30,76 @@ stderr of test 'optimizers` in directory # 03:16:16 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=rome" "--port=36613" # 03:16:16 > -MAPI = (monetdb) /var/tmp/mtest-19755/.s.monetdb.33236 +MAPI = (monetdb) /var/tmp/mtest-6317/.s.monetdb.38668 QUERY = set optimizer='off'; ERROR = !optimizer 'off' unknown -MAPI = (monetdb) /var/tmp/mtest-19755/.s.monetdb.33236 +MAPI = (monetdb) /var/tmp/mtest-6317/.s.monetdb.38668 QUERY = set optimizer='on'; ERROR = !optimizer 'on' unknown -MAPI = (monetdb) /var/tmp/mtest-19755/.s.monetdb.33236 +MAPI = (monetdb) /var/tmp/mtest-6317/.s.monetdb.38668 QUERY = set optimizer=''; ERROR = !optimizer '' unknown -MAPI = (monetdb) /var/tmp/mtest-19755/.s.monetdb.33236 -QUERY = set optimizer='optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +MAPI = (monetdb) /var/tmp/mtest-6317/.s.monetdb.38668 +QUERY = set optimizer='optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-19755/.s.monetdb.33236 -QUERY = set optimizer='optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; +MAPI = (monetdb) /var/tmp/mtest-6317/.s.monetdb.38668 +QUERY = set optimizer='optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-19755/.s.monetdb.33236 -QUERY = set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list