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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list