Changeset: 097dd32a0c74 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=097dd32a0c74 Added Files: sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.sql sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.err sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.out Modified Files: sql/backends/monet5/sql_cat.c sql/test/BugTracker-2018/Tests/All Branch: Mar2018 Log Message:
Added test and fixes bug 6585 ie check for the table to be added if it is already a parent of the merge table diffs (249 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 @@ -85,18 +85,22 @@ rel_check_tables(sql_table *nt, sql_tabl sql_column *mc = m->data; if (subtype_cmp(&nc->type, &mc->type) != 0) - throw(SQL,"sql.relcheck_tables",SQLSTATE(3F000) "ALTER MERGE TABLE: to be added table column type doesn't match MERGE TABLE definition"); + throw(SQL,"sql.rel_check_tables",SQLSTATE(3F000) "ALTER MERGE TABLE: to be added table column type doesn't match MERGE TABLE definition"); } if (cs_size(&nt->idxs) != cs_size(&nnt->idxs)) - throw(SQL,"sql.relcheck_tables",SQLSTATE(3F000) "ALTER MERGE TABLE: to be added table index doesn't match MERGE TABLE definition"); + throw(SQL,"sql.rel_check_tables",SQLSTATE(3F000) "ALTER MERGE TABLE: to be added table index doesn't match MERGE TABLE definition"); if (cs_size(&nt->idxs)) for (n = nt->idxs.set->h, m = nnt->idxs.set->h; n && m; n = n->next, m = m->next) { sql_idx *ni = n->data; sql_idx *mi = m->data; if (ni->type != mi->type) - throw(SQL,"sql.relcheck_tables",SQLSTATE(3F000) "ALTER MERGE TABLE: to be added table index type doesn't match MERGE TABLE definition"); + throw(SQL,"sql.rel_check_tables",SQLSTATE(3F000) "ALTER MERGE TABLE: to be added table index type doesn't match MERGE TABLE definition"); } + for(sql_table *up = nt->p ; up ; up = up->p) { + if(!strcmp(up->s->base.name, nnt->s->base.name) && !strcmp(up->base.name, nnt->base.name)) + throw(SQL,"sql.rel_check_tables",SQLSTATE(3F000) "ALTER MERGE TABLE: to be added table is a parent of the MERGE TABLE"); + } return MAL_SUCCEED; } diff --git a/sql/test/BugTracker-2018/Tests/All b/sql/test/BugTracker-2018/Tests/All --- a/sql/test/BugTracker-2018/Tests/All +++ b/sql/test/BugTracker-2018/Tests/All @@ -50,3 +50,4 @@ sqlitelogictest-complex-case.Bug-6573 create-temp-table-ordered-index-error.Bug-6574 sqlitelogictest-aritmetic-expressions-handling.Bug-6576 multiple-insertinto-table-Bug-6578 +nested-merge-tables.Bug-6585 diff --git a/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.sql b/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.sql @@ -0,0 +1,34 @@ +create merge table test1 (a int); +create merge table test2 (a int); +create table test3 (like test1); +create merge table test4 (a int); +create table test5 (like test4); + +insert into test3 values (1); + +alter table test1 add table test2; +alter table test2 add table test3; +alter table test2 add table test1; --error + +select a from test1; +select a from test2; +select a from test3; + +alter table test2 add table test4; +alter table test4 add table test1; --error +alter table test4 add table test5; + +select a from test1; +select a from test2; + +alter table test1 drop table test2; +alter table test2 drop table test3; +alter table test2 drop table test4; +alter table test4 drop table test1; --error +alter table test4 drop table test5; + +drop table test1; +drop table test2; +drop table test3; +drop table test4; +drop table test5; diff --git a/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.err b/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.err @@ -0,0 +1,49 @@ +stderr of test 'nested-merge-tables.Bug-6584` in directory 'sql/test/BugTracker-2018` itself: + + +# 13:40:48 > +# 13:40:48 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36034" "--set" "mapi_usock=/var/tmp/mtest-7469/.s.monetdb.36034" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/repositories/MonetDB-Mar2018/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2018" "--set" "embedded_r=yes" "--set" "embedded_py=true" "--set" "embedded_c=true" +# 13:40:48 > + +# builtin opt gdk_dbpath = /home/ferreira/repositories/MonetDB-Mar2018/BUILD/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = > +# builtin opt monet_daemon = no +# builtin opt mapi_port = 50000 +# builtin opt mapi_open = 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 = 36034 +# cmdline opt mapi_usock = /var/tmp/mtest-7469/.s.monetdb.36034 +# cmdline opt monet_prompt = +# cmdline opt gdk_dbpath = /home/ferreira/repositories/MonetDB-Mar2018/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2018 +# cmdline opt embedded_r = yes +# cmdline opt embedded_py = true +# cmdline opt embedded_c = true +# cmdline opt gdk_debug = 553648138 + +# 13:40:49 > +# 13:40:49 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-7469" "--port=36034" +# 13:40:49 > + +MAPI = (monetdb) /var/tmp/mtest-7469/.s.monetdb.36034 +QUERY = alter table test2 add table test1; --error +ERROR = !ALTER MERGE TABLE: to be added table is a parent of the MERGE TABLE +CODE = 3F000 +MAPI = (monetdb) /var/tmp/mtest-7922/.s.monetdb.38298 +QUERY = alter table test4 add table test1; --error +ERROR = !ALTER MERGE TABLE: to be added table is a parent of the MERGE TABLE +CODE = 3F000 +MAPI = (monetdb) /var/tmp/mtest-7922/.s.monetdb.38298 +QUERY = alter table test4 drop table test1; --error +ERROR = !ALTER TABLE: table 'sys.test1' isn't part of the MERGE TABLE 'sys.test4' +CODE = 42S02 + +# 13:40:49 > +# 13:40:49 > "Done." +# 13:40:49 > + diff --git a/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.out b/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2018/Tests/nested-merge-tables.Bug-6585.stable.out @@ -0,0 +1,114 @@ +stdout of test 'nested-merge-tables.Bug-6584` in directory 'sql/test/BugTracker-2018` itself: + + +# 13:40:48 > +# 13:40:48 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36034" "--set" "mapi_usock=/var/tmp/mtest-7469/.s.monetdb.36034" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/repositories/MonetDB-Mar2018/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2018" "--set" "embedded_r=yes" "--set" "embedded_py=true" "--set" "embedded_c=true" +# 13:40:48 > + +# MonetDB 5 server v11.29.4 +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2018', using 8 threads +# Compiled for x86_64-pc-linux-gnu/64bit +# Found 15.492 GiB available main-memory. +# Copyright (c) 1993 - July 2008 CWI. +# Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved +# Visit https://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://dhcp-23.eduroam.cwi.nl:36034/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-7469/.s.monetdb.36034 +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded +# MonetDB/Python2 module loaded +# MonetDB/R module loaded + +Ready. +# SQL catalog created, loading sql scripts once +# loading sql script: 09_like.sql +# loading sql script: 10_math.sql +# loading sql script: 11_times.sql +# loading sql script: 12_url.sql +# loading sql script: 13_date.sql +# loading sql script: 14_inet.sql +# loading sql script: 15_querylog.sql +# loading sql script: 16_tracelog.sql +# loading sql script: 17_temporal.sql +# loading sql script: 18_index.sql +# loading sql script: 20_vacuum.sql +# loading sql script: 21_dependency_functions.sql +# loading sql script: 21_dependency_views.sql +# loading sql script: 22_clients.sql +# loading sql script: 23_skyserver.sql +# loading sql script: 25_debug.sql +# loading sql script: 26_sysmon.sql +# loading sql script: 27_rejects.sql +# loading sql script: 39_analytics.sql +# loading sql script: 40_geom.sql +# loading sql script: 40_json.sql +# loading sql script: 41_md5sum.sql +# loading sql script: 45_uuid.sql +# loading sql script: 46_profiler.sql +# loading sql script: 51_sys_schema_extension.sql +# loading sql script: 60_wlcr.sql +# loading sql script: 72_fits.sql +# loading sql script: 74_netcdf.sql +# loading sql script: 75_lidar.sql +# loading sql script: 75_shp.sql +# loading sql script: 75_storagemodel.sql +# loading sql script: 80_statistics.sql +# loading sql script: 80_udf.sql +# loading sql script: 85_bam.sql +# loading sql script: 90_generator.sql +# loading sql script: 99_system.sql + +# 13:40:49 > +# 13:40:49 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-7469" "--port=36034" +# 13:40:49 > + +#create merge table test1 (a int); +#create merge table test2 (a int); +#create table test3 (like test1); +#insert into test3 values (1); +[ 1 ] +#alter table test1 add table test2; +#alter table test2 add table test3; +#select a from test1; +% sys.test1 # table_name +% a # name +% int # type +% 1 # length +[ 1 ] +#select a from test2; +% sys.test2 # table_name +% a # name +% int # type +% 1 # length +[ 1 ] +#select a from test3; +% sys.test3 # table_name +% a # name +% int # type +% 1 # length +[ 1 ] +#alter table test2 add table test4; +#alter table test4 add table test5; +#select a from test1; +% .test1 # table_name +% a # name +% int # type +% 1 # length +[ 1 ] +#select a from test2; +% .test2 # table_name +% a # name +% int # type +% 1 # length +[ 1 ] +#alter table test1 drop table test2; +#alter table test2 drop table test3; +#drop table test1; +#drop table test2; +#drop table test3; + +# 13:40:49 > +# 13:40:49 > "Done." +# 13:40:49 > + _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list