Changeset: 60bfcb9be37e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=60bfcb9be37e
Added Files:
sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.sql
sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.err
sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.out
Modified Files:
sql/backends/monet5/sql_cat.c
sql/server/rel_optimizer.c
sql/test/merge-partitions/Tests/mergepart01.stable.err
sql/test/merge-partitions/Tests/mergepart01.stable.out
sql/test/merge-partitions/Tests/mergepart05.stable.err
sql/test/merge-partitions/Tests/mergepart07.stable.err
sql/test/merge-partitions/Tests/mergepart18.stable.err
sql/test/merge-partitions/Tests/mergepart19.stable.err
sql/test/mergetables/Tests/All
sql/test/mergetables/Tests/addtable.stable.err
sql/test/mergetables/Tests/doubletable.stable.err
Branch: linear-hashing
Log Message:
Merged with Nov2019
diffs (truncated from 333 to 300 lines):
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -149,7 +149,7 @@ validate_alter_table_add_table(mvc *sql,
*mt = rmt;
*pt = rpt;
if (!update && rmt && (!isMergeTable(rmt) && !isReplicaTable(rmt)))
- throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: cannot add table
'%s.%s' to table '%s.%s'", psname, ptname, msname, mtname);
+ throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: cannot add table
'%s.%s' to %s '%s.%s'", psname, ptname, TABLE_TYPE_DESCRIPTION(rmt->type,
rmt->properties), msname, mtname);
if (rmt && rpt) {
char *msg;
node *n = cs_find_id(&rmt->members, rpt->base.id);
@@ -160,9 +160,9 @@ validate_alter_table_add_table(mvc *sql,
if (ms->base.id != ps->base.id)
throw(SQL,call,SQLSTATE(42000) "ALTER TABLE: all
children tables of '%s.%s' must be part of schema '%s'", msname, mtname,
msname);
if (n && !update)
- throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: table
'%s.%s' is already part of the %s '%s.%s'", psname, ptname, errtable, msname,
mtname);
+ throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: table
'%s.%s' is already part of %s '%s.%s'", psname, ptname, errtable, msname,
mtname);
if (!n && update)
- throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: table
'%s.%s' isn't part of the %s '%s.%s'", psname, ptname, errtable, msname,
mtname);
+ throw(SQL,call,SQLSTATE(42S02) "ALTER TABLE: table
'%s.%s' isn't part of %s '%s.%s'", psname, ptname, errtable, msname, mtname);
if ((msg = rel_check_tables(rmt, rpt, errtable)) != NULL)
return msg;
return MAL_SUCCEED;
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -4202,7 +4202,7 @@ rel_push_aggr_down(int *changes, mvc *sq
ne = exp_uses_exp( rel->exps, e);
if (!ne)
- ne = e;
+ continue;
ne = list_find_exp( u->exps, ne);
assert(ne);
ne = exp_ref(sql->sa, ne);
diff --git a/sql/test/merge-partitions/Tests/mergepart01.stable.err
b/sql/test/merge-partitions/Tests/mergepart01.stable.err
--- a/sql/test/merge-partitions/Tests/mergepart01.stable.err
+++ b/sql/test/merge-partitions/Tests/mergepart01.stable.err
@@ -31,7 +31,7 @@ stderr of test 'mergepart01` in director
MAPI = (monetdb) /var/tmp/mtest-13251/.s.monetdb.37915
QUERY = ALTER TABLE testme ADD TABLE subtable1 AS PARTITION FROM 5 TO 10;
--error
-ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of the RANGE
PARTITION TABLE 'sys.testme'
+ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of RANGE PARTITION
TABLE 'sys.testme'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-13251/.s.monetdb.37915
QUERY = ALTER TABLE testme ADD TABLE wrongtable AS PARTITION FROM 5 TO 6;
--error
diff --git a/sql/test/merge-partitions/Tests/mergepart05.stable.err
b/sql/test/merge-partitions/Tests/mergepart05.stable.err
--- a/sql/test/merge-partitions/Tests/mergepart05.stable.err
+++ b/sql/test/merge-partitions/Tests/mergepart05.stable.err
@@ -31,15 +31,15 @@ stderr of test 'mergepart05` in director
MAPI = (monetdb) /var/tmp/mtest-1799/.s.monetdb.30832
QUERY = ALTER TABLE listparts ADD TABLE subtable1 AS PARTITION FROM 'else' TO
RANGE MAXVALUE; --error
-ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of the RANGE
PARTITION TABLE 'sys.listparts'
+ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of RANGE PARTITION
TABLE 'sys.listparts'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-1799/.s.monetdb.30832
QUERY = ALTER TABLE listparts ADD TABLE subtable1 AS PARTITION FROM RANGE
MINVALUE TO RANGE MAXVALUE; --error
-ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of the RANGE
PARTITION TABLE 'sys.listparts'
+ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of RANGE PARTITION
TABLE 'sys.listparts'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-1799/.s.monetdb.30832
QUERY = ALTER TABLE listparts ADD TABLE subtable1 AS PARTITION FROM 'hello' TO
'world';
-ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of the RANGE
PARTITION TABLE 'sys.listparts'
+ERROR = !ALTER TABLE: table 'sys.subtable1' is already part of RANGE PARTITION
TABLE 'sys.listparts'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-1799/.s.monetdb.30832
QUERY = ALTER TABLE listparts ADD TABLE subtable1 AS PARTITION FROM 'hello"'
TO '"world'; --error
diff --git a/sql/test/merge-partitions/Tests/mergepart07.stable.err
b/sql/test/merge-partitions/Tests/mergepart07.stable.err
--- a/sql/test/merge-partitions/Tests/mergepart07.stable.err
+++ b/sql/test/merge-partitions/Tests/mergepart07.stable.err
@@ -65,7 +65,7 @@ ERROR = !ALTER TABLE: range bound cannot
CODE = 42000
MAPI = (monetdb) /var/tmp/mtest-15212/.s.monetdb.36187
QUERY = ALTER TABLE anothertest ADD TABLE othersub1 AS PARTITION FROM 'nono'
TO 'wrong' WITH NULL VALUES; --error
-ERROR = !ALTER TABLE: table 'sys.othersub1' is already part of the RANGE
PARTITION TABLE 'sys.anothertest'
+ERROR = !ALTER TABLE: table 'sys.othersub1' is already part of RANGE PARTITION
TABLE 'sys.anothertest'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-13251/.s.monetdb.37915
QUERY = ALTER TABLE anothertest ADD TABLE othersub1 AS PARTITION FROM 'a' TO
'string'; --error
diff --git a/sql/test/merge-partitions/Tests/mergepart18.stable.err
b/sql/test/merge-partitions/Tests/mergepart18.stable.err
--- a/sql/test/merge-partitions/Tests/mergepart18.stable.err
+++ b/sql/test/merge-partitions/Tests/mergepart18.stable.err
@@ -30,7 +30,7 @@ stderr of test 'mergepart18` in director
MAPI = (monetdb) /var/tmp/mtest-13251/.s.monetdb.37915
QUERY = ALTER TABLE updateme SET TABLE subt1 AS PARTITION FROM '1' TO '100';
--error
-ERROR = !ALTER TABLE: table 'sys.subt1' isn't part of the RANGE PARTITION
TABLE 'sys.updateme'
+ERROR = !ALTER TABLE: table 'sys.subt1' isn't part of RANGE PARTITION TABLE
'sys.updateme'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-13251/.s.monetdb.37915
QUERY = ALTER TABLE updateme SET TABLE subt1 AS PARTITION FROM '-100' TO '0';
--error
diff --git a/sql/test/merge-partitions/Tests/mergepart19.stable.err
b/sql/test/merge-partitions/Tests/mergepart19.stable.err
--- a/sql/test/merge-partitions/Tests/mergepart19.stable.err
+++ b/sql/test/merge-partitions/Tests/mergepart19.stable.err
@@ -30,7 +30,7 @@ stderr of test 'mergepart19` in director
MAPI = (monetdb) /var/tmp/mtest-15034/.s.monetdb.31422
QUERY = ALTER TABLE testme SET TABLE subt1 AS PARTITION IN ('21', '22', '23');
--error
-ERROR = !ALTER TABLE: table 'sys.subt1' isn't part of the LIST PARTITION TABLE
'sys.testme'
+ERROR = !ALTER TABLE: table 'sys.subt1' isn't part of LIST PARTITION TABLE
'sys.testme'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-15034/.s.monetdb.31422
QUERY = ALTER TABLE testme SET TABLE subt1 AS PARTITION IN ('44', '45', '46');
--error
diff --git a/sql/test/mergetables/Tests/All b/sql/test/mergetables/Tests/All
--- a/sql/test/mergetables/Tests/All
+++ b/sql/test/mergetables/Tests/All
@@ -35,3 +35,4 @@ sqlsmith.Bug-6480
sqlsmith-exists
sqlsmith-exists2
mergedb_drop
+mergetable_rel_push_aggr_down
diff --git a/sql/test/mergetables/Tests/addtable.stable.err
b/sql/test/mergetables/Tests/addtable.stable.err
--- a/sql/test/mergetables/Tests/addtable.stable.err
+++ b/sql/test/mergetables/Tests/addtable.stable.err
@@ -29,7 +29,7 @@ stderr of test 'addtable` in directory '
MAPI = (monetdb) /var/tmp/mtest-19670/.s.monetdb.38251
QUERY = alter table tmp1 add table tmp2;
-ERROR = !ALTER TABLE: cannot add table 'sys.tmp2' to table 'sys.tmp1'
+ERROR = !ALTER TABLE: cannot add table 'sys.tmp2' to TABLE 'sys.tmp1'
CODE = 42S02
# 13:47:16 >
diff --git a/sql/test/mergetables/Tests/doubletable.stable.err
b/sql/test/mergetables/Tests/doubletable.stable.err
--- a/sql/test/mergetables/Tests/doubletable.stable.err
+++ b/sql/test/mergetables/Tests/doubletable.stable.err
@@ -32,11 +32,11 @@ stderr of test 'doubletable` in director
MAPI = (monetdb) /var/tmp/mtest-30244/.s.monetdb.33503
QUERY = ALTER TABLE complete ADD TABLE part1;
-ERROR = !ALTER TABLE: table 'sys.part1' is already part of the MERGE TABLE
'sys.complete'
+ERROR = !ALTER TABLE: table 'sys.part1' is already part of MERGE TABLE
'sys.complete'
CODE = 42S02
MAPI = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685
QUERY = ALTER TABLE complete ADD TABLE part2;
-ERROR = !ALTER TABLE: table 'sys.part2' is already part of the MERGE TABLE
'sys.complete'
+ERROR = !ALTER TABLE: table 'sys.part2' is already part of MERGE TABLE
'sys.complete'
CODE = 42S02
diff --git a/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.sql
b/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.sql
@@ -0,0 +1,57 @@
+start transaction;
+
+CREATE SCHEMA "myschema";
+
+CREATE MERGE TABLE "myschema"."mymerge" (
+"col1" CHARACTER LARGE OBJECT,
+"col2" CHARACTER LARGE OBJECT,
+"col3" CHARACTER LARGE OBJECT,
+"col4" CHARACTER LARGE OBJECT,
+"col5" CHARACTER LARGE OBJECT,
+"col6" BIGINT,
+"col7" BIGINT
+);
+
+CREATE TABLE "myschema"."subt1" (
+"col1" CHARACTER LARGE OBJECT,
+"col2" CHARACTER LARGE OBJECT,
+"col3" CHARACTER LARGE OBJECT,
+"col4" CHARACTER LARGE OBJECT,
+"col5" CHARACTER LARGE OBJECT,
+"col6" BIGINT,
+"col7" BIGINT
+);
+
+CREATE TABLE "myschema"."subt2" (
+"col1" CHARACTER LARGE OBJECT,
+"col2" CHARACTER LARGE OBJECT,
+"col3" CHARACTER LARGE OBJECT,
+"col4" CHARACTER LARGE OBJECT,
+"col5" CHARACTER LARGE OBJECT,
+"col6" BIGINT,
+"col7" BIGINT
+);
+
+alter table "myschema"."mymerge" add table "myschema"."subt1";
+alter table "myschema"."mymerge" add table "myschema"."subt2";
+
+select count(*) FROM (
+ SELECT myalias.col5 AS field1,
+ myalias.col4 AS field2,
+ myalias.col3 AS field3,
+ myalias.col1 AS field4,
+ myalias.col2 AS field5,
+ (COUNT(*)),
+ 'bb7fd938-43b0-11ea-b44c-845ddc3cb4be' AS MyID
+ FROM "myschema"."mymerge" myalias
+ WHERE myalias.col7 >= 1577914380 AND myalias.col7 <= 1580423692
+ GROUP BY field3, field5, field1, field4, field2) AS mycount;
+
+select count(*) FROM (
+ SELECT myalias.col5 AS field1,
+ myalias.col4 AS field2,
+ (COUNT(*))
+ FROM "myschema"."mymerge" myalias
+ GROUP BY field1, field2) AS mycount;
+
+rollback;
diff --git
a/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.err
b/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.err
@@ -0,0 +1,30 @@
+stderr of test 'mergetable_rel_push_aggr_down` in directory
'sql/test/mergetables` itself:
+
+
+# 12:55:05 >
+# 12:55:05 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=39679" "--set"
"mapi_usock=/var/tmp/mtest-61455/.s.monetdb.39679" "--forcemito"
"--dbpath=/home/ferreira/repositories/MonetDB-Nov2019/BUILD/var/MonetDB/mTests_sql_test_mergetables"
"--set" "embedded_c=true"
+# 12:55:05 >
+
+# builtin opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-Nov2019/BUILD/var/monetdb5/dbfarm/demo
+# builtin opt mapi_port = 50000
+# builtin opt mapi_open = false
+# builtin opt mapi_ipv6 = false
+# builtin opt mapi_autosense = false
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 39679
+# cmdline opt mapi_usock = /var/tmp/mtest-61455/.s.monetdb.39679
+# cmdline opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-Nov2019/BUILD/var/MonetDB/mTests_sql_test_mergetables
+# cmdline opt embedded_c = true
+
+# 12:55:05 >
+# 12:55:05 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-61455" "--port=39679"
+# 12:55:05 >
+
+
+# 12:55:05 >
+# 12:55:05 > "Done."
+# 12:55:05 >
+
diff --git
a/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.out
b/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/mergetables/Tests/mergetable_rel_push_aggr_down.stable.out
@@ -0,0 +1,88 @@
+stdout of test 'mergetable_rel_push_aggr_down` in directory
'sql/test/mergetables` itself:
+
+
+# 12:55:05 >
+# 12:55:05 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=39679" "--set"
"mapi_usock=/var/tmp/mtest-61455/.s.monetdb.39679" "--forcemito"
"--dbpath=/home/ferreira/repositories/MonetDB-Nov2019/BUILD/var/MonetDB/mTests_sql_test_mergetables"
"--set" "embedded_c=true"
+# 12:55:05 >
+
+# MonetDB 5 server v11.35.10 (hg id: f9ad2ccd83b7)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_mergetables', using 8 threads
+# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers
+# Found 15.496 GiB available main-memory of which we use 12.630 GiB
+# Copyright (c) 1993 - July 2008 CWI.
+# Copyright (c) August 2008 - 2020 MonetDB B.V., all rights reserved
+# Visit https://www.monetdb.org/ for further information
+# Listening for connection requests on
mapi:monetdb://localhost.localdomain:39679/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-61455/.s.monetdb.39679
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+
+# 12:55:05 >
+# 12:55:05 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-61455" "--port=39679"
+# 12:55:05 >
+
+#start transaction;
+#CREATE SCHEMA "myschema";
+#CREATE MERGE TABLE "myschema"."mymerge" (
+#"col1" CHARACTER LARGE OBJECT,
+#"col2" CHARACTER LARGE OBJECT,
+#"col3" CHARACTER LARGE OBJECT,
+#"col4" CHARACTER LARGE OBJECT,
+#"col5" CHARACTER LARGE OBJECT,
+#"col6" BIGINT,
+#"col7" BIGINT
+#);
+#CREATE TABLE "myschema"."subt1" (
+#"col1" CHARACTER LARGE OBJECT,
+#"col2" CHARACTER LARGE OBJECT,
+#"col3" CHARACTER LARGE OBJECT,
+#"col4" CHARACTER LARGE OBJECT,
+#"col5" CHARACTER LARGE OBJECT,
+#"col6" BIGINT,
+#"col7" BIGINT
+#);
+#CREATE TABLE "myschema"."subt2" (
+#"col1" CHARACTER LARGE OBJECT,
+#"col2" CHARACTER LARGE OBJECT,
+#"col3" CHARACTER LARGE OBJECT,
+#"col4" CHARACTER LARGE OBJECT,
+#"col5" CHARACTER LARGE OBJECT,
+#"col6" BIGINT,
+#"col7" BIGINT
+#);
+#alter table "myschema"."mymerge" add table "myschema"."subt1";
+#alter table "myschema"."mymerge" add table "myschema"."subt2";
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list