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

Reply via email to