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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list