Changeset: 49374908d48d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=49374908d48d Modified Files: monetdb5/optimizer/opt_pipes.c sql/backends/monet5/Tests/optimizers.stable.err sql/test/BugTracker-2009/Tests/reorder.SF-2770608.sql sql/test/BugTracker-2009/Tests/table-leftovers.SF-2779462.sql Branch: transaction-replication Log Message:
Merge with default branch diffs (182 lines): 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 @@ -311,7 +311,7 @@ getPipeCatalog(bat *nme, bat *def, bat * static str validatePipe(MalBlkPtr mb) { - int mitosis = FALSE, deadcode = FALSE, mergetable = FALSE, multiplex = FALSE, garbage = FALSE; + int mitosis = FALSE, deadcode = FALSE, mergetable = FALSE, multiplex = FALSE, garbage = FALSE, generator = FALSE, remap = FALSE; int i; if (mb == NULL || getInstrPtr(mb, 1) == 0) @@ -319,18 +319,21 @@ validatePipe(MalBlkPtr mb) if (getFunctionId(getInstrPtr(mb, 1)) == NULL || idcmp(getFunctionId(getInstrPtr(mb, 1)), "inline")) throw(MAL, "optimizer.validate", "'inline' should be the first\n"); - /* deadcode should be used */ for (i = 1; i < mb->stop - 1; i++) if (getFunctionId(getInstrPtr(mb, i)) != NULL) { if (strcmp(getFunctionId(getInstrPtr(mb, i)), "deadcode") == 0) deadcode = TRUE; + else if (strcmp(getFunctionId(getInstrPtr(mb, i)), "remap") == 0) + remap = TRUE; else if (strcmp(getFunctionId(getInstrPtr(mb, i)), "mitosis") == 0) mitosis = TRUE; else if (strcmp(getFunctionId(getInstrPtr(mb, i)), "mergetable") == 0) mergetable = TRUE; else if (strcmp(getFunctionId(getInstrPtr(mb, i)), "multiplex") == 0) multiplex = TRUE; - else if (strcmp(getFunctionId(getInstrPtr(mb, i)), "garbageCollector") == 0 && i == mb->stop - 2) + else if (strcmp(getFunctionId(getInstrPtr(mb, i)), "generator") == 0) + generator = TRUE; + else if (strcmp(getFunctionId(getInstrPtr(mb, i)), "garbageCollector") == 0) garbage = TRUE; } else throw(MAL, "optimizer.validate", "Missing optimizer call\n"); @@ -338,12 +341,17 @@ validatePipe(MalBlkPtr mb) if (mitosis == TRUE && mergetable == FALSE) throw(MAL, "optimizer.validate", "'mitosis' needs 'mergetable'\n"); + /* several optimizer should be used */ if (multiplex == 0) throw(MAL, "optimizer.validate", "'multiplex' should be used\n"); if (deadcode == FALSE) - throw(MAL, "optimizeri.validate", "'deadcode' should be used at least once\n"); + throw(MAL, "optimizer.validate", "'deadcode' should be used at least once\n"); if (garbage == FALSE) throw(MAL, "optimizer.validate", "'garbageCollector' should be used as the last one\n"); + if (remap == FALSE) + throw(MAL, "optimizer.validate", "'remap' should be used\n"); + if (generator == FALSE) + throw(MAL, "optimizer.validate", "'generator' should be used\n"); return MAL_SUCCEED; } 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,72 +30,78 @@ 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-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='off'; ERROR = !optimizer 'off' unknown -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='on'; ERROR = !optimizer 'on' unknown -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer=''; ERROR = !optimizer '' unknown -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.coercions();optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.aliases();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.costModel();optimizer.coercions();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.reduce();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.costModel();optimizer.coercions();optimizer.commonTerms();optimizer.accumulators();optimizer.joinPath();optimizer.deadcode();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.inline();'; ERROR = !'multiplex' should be used -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.inline();optimizer.multiplex();'; ERROR = !'deadcode' should be used at least once -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.inline();optimizer.multiplex();optimizer.deadcode();'; ERROR = !'garbageCollector' should be used as the last one -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.inline();optimizer.deadcode();optimizer.multiplex();'; ERROR = !'garbageCollector' should be used as the last one -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.deadcode();optimizer.inline();optimizer.multiplex();optimizer.garbageCollector();'; ERROR = !'inline' should be the first -MAPI = (monetdb) /var/tmp/mtest-21021/.s.monetdb.35166 +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 QUERY = set optimizer='optimizer.inline();optimizer.deadcode();optimizer.garbageCollector();optimizer.multiplex();'; ERROR = !'garbageCollector' should be used as the last one +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 +QUERY = set optimizer='optimizer.inline();optimizer.multiplex();optimizer.deadcode();optimizer.garbageCollector();'; + +MAPI = (monetdb) /var/tmp/mtest-10057/.s.monetdb.36816 +QUERY = set optimizer='optimizer.inline();optimizer.deadcode();optimizer.multiplex();optimizer.garbageCollector();'; + # 03:16:17 > # 03:16:17 > "Done." diff --git a/sql/test/BugTracker-2009/Tests/reorder.SF-2770608.sql b/sql/test/BugTracker-2009/Tests/reorder.SF-2770608.sql --- a/sql/test/BugTracker-2009/Tests/reorder.SF-2770608.sql +++ b/sql/test/BugTracker-2009/Tests/reorder.SF-2770608.sql @@ -42,7 +42,7 @@ 5125 "url" "url" 0 0 0 13 2000 5187 "inet" "inet" 0 0 0 13 2000 -- query causes problems in specific pipeline -set optimizer='optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.mitosis();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.constants();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.garbageCollector();'; +set optimizer='optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.mitosis();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.constants();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();'; select * from t2770608 t1, t2770608 t2 where t1.id = t2.id; -- clean up diff --git a/sql/test/BugTracker-2009/Tests/table-leftovers.SF-2779462.sql b/sql/test/BugTracker-2009/Tests/table-leftovers.SF-2779462.sql --- a/sql/test/BugTracker-2009/Tests/table-leftovers.SF-2779462.sql +++ b/sql/test/BugTracker-2009/Tests/table-leftovers.SF-2779462.sql @@ -1,6 +1,6 @@ start transaction; -set optimizer='optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.constants();optimizer.commonTerms();optimizer.reorder();optimizer.joinPath();optimizer.deadcode();optimizer.recycler();optimizer.reduce();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.garbageCollector();'; +set optimizer='optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.constants();optimizer.commonTerms();optimizer.reorder();optimizer.joinPath();optimizer.deadcode();optimizer.recycler();optimizer.reduce();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();'; CREATE TABLE y (x int); INSERT INTO y VALUES (10); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list