Changeset: b4de79f8108f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b4de79f8108f Modified Files: monetdb5/optimizer/opt_mergetable.c sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimizer.c sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.err sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.stable.err Branch: default Log Message:
Merge with Jul2017 branch. diffs (truncated from 304 to 300 lines): diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -112,8 +112,13 @@ mat_add_var(matlist_t *ml, InstrPtr q, I dst->pm = parentmat; dst->packed = 0; dst->pushed = pushed; - if (ml->vars[var] < 0) + if (ml->vars[var] < 0 || dst->type != mat_ext) { + if (ml->vars[var] >= 0) { + ml->v[ml->vars[var]].packed = 1; + ml->v[ml->vars[var]].pushed = 1; + } ml->vars[var] = ml->top; + } ++ml->top; } diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -1300,6 +1300,19 @@ exp_is_zero(mvc *sql, sql_exp *e) } int +exp_is_not_null(mvc *sql, sql_exp *e) +{ + if (e->type == e_atom) { + if (e->l) { + return !(atom_null(e->l)); + } else if(sql->emode == m_normal && sql->argc > e->flag && EC_COMPUTE(exp_subtype(e)->type->eclass)) { + return !atom_null(sql->args[e->flag]); + } + } + return 0; +} + +int exp_is_atom( sql_exp *e ) { switch (e->type) { diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -119,6 +119,7 @@ extern int exp_is_correlation(sql_exp *e extern int exp_is_join_exp(sql_exp *e); extern int exp_is_atom(sql_exp *e); extern int exp_is_zero(mvc *sql, sql_exp *e); +extern int exp_is_not_null(mvc *sql, sql_exp *e); extern int exps_are_atoms(list *exps); extern int exp_has_func(sql_exp *e); extern int exp_unsafe(sql_exp *e); 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 @@ -2695,13 +2695,13 @@ exp_simplify_math( mvc *sql, sql_exp *e, sql_exp *le = l->h->data; sql_exp *re = l->h->next->data; /* 0*a = 0 */ - if (exp_is_atom(le) && exp_is_zero(sql, le)) { + if (exp_is_atom(le) && exp_is_zero(sql, le) && exp_is_not_null(sql, re)) { (*changes)++; exp_setname(sql->sa, le, exp_relname(e), exp_name(e)); return le; } /* a*0 = 0 */ - if (exp_is_atom(re) && exp_is_zero(sql, re)) { + if (exp_is_atom(re) && exp_is_zero(sql, re) && exp_is_not_null(sql, le)) { (*changes)++; exp_setname(sql->sa, re, exp_relname(e), exp_name(e)); return re; diff --git a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out --- a/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out +++ b/sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out @@ -108,7 +108,7 @@ Ready. % sys.tbls, sys.tbls, sys.tbls, sys.tbls, sys.tbls, sys.tbls, sys.tbls, sys.tbls # table_name % name, schema_id, query, type, system, commit_action, readonly, temporary # name % varchar, int, varchar, smallint, boolean, smallint, boolean, smallint # type -% 12, 4, 379, 1, 5, 1, 5, 1 # length +% 12, 4, 169, 1, 5, 1, 5, 1 # length [ "schemas", 2000, NULL, 0, true, 0, false, 0 ] [ "types", 2000, NULL, 0, true, 0, false, 0 ] [ "functions", 2000, NULL, 0, true, 0, false, 0 ] diff --git a/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.err b/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.err --- a/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.err +++ b/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.err @@ -1,11 +1,11 @@ stderr of test 'crash-dce.Bug-6330` in directory 'sql/test/BugTracker-2017` itself: -# 13:53:44 > -# 13:53:44 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=30094" "--set" "mapi_usock=/var/tmp/mtest-30656/.s.monetdb.30094" "--set" "monet_prompt=" "--forcemito" "--dbpath=/export/scratch2/dinther/INSTALL/var/MonetDB/mTests_sql_test_BugTracker-2017" "--set" "embedded_r=yes" "--set" "embedded_py=true" -# 13:53:44 > +# 19:31:40 > +# 19:31:40 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=33270" "--set" "mapi_usock=/var/tmp/mtest-22559/.s.monetdb.33270" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2017" +# 19:31:40 > -# builtin opt gdk_dbpath = /export/scratch2/dinther/INSTALL/var/monetdb5/dbfarm/demo +# builtin opt gdk_dbpath = /home/niels/scratch/rc-monetdb/Linux-x86_64/var/monetdb5/dbfarm/demo # builtin opt gdk_debug = 0 # builtin opt gdk_vmtrim = no # builtin opt monet_prompt = > @@ -17,24 +17,18 @@ stderr of test 'crash-dce.Bug-6330` in d # builtin opt sql_debug = 0 # cmdline opt gdk_nr_threads = 0 # cmdline opt mapi_open = true -# cmdline opt mapi_port = 30094 -# cmdline opt mapi_usock = /var/tmp/mtest-30656/.s.monetdb.30094 +# cmdline opt mapi_port = 33270 +# cmdline opt mapi_usock = /var/tmp/mtest-22559/.s.monetdb.33270 # cmdline opt monet_prompt = -# cmdline opt gdk_dbpath = /export/scratch2/dinther/INSTALL/var/MonetDB/mTests_sql_test_BugTracker-2017 -# cmdline opt embedded_r = yes -# cmdline opt embedded_py = true +# cmdline opt gdk_dbpath = /home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2017 # cmdline opt gdk_debug = 536870922 -# 13:53:45 > -# 13:53:45 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-30656" "--port=30094" -# 13:53:45 > - -MAPI = (monetdb) /var/tmp/mtest-30656/.s.monetdb.30094 -QUERY = SELECT 45 - - CASE + + 70 WHEN COUNT ( * ) + SUM ( DISTINCT 91 ) + MIN ( DISTINCT 41 ) / 65 THEN + 98 END * + - 0 - - COUNT ( * ) AS col0; -ERROR = !TypeException:user.main[12]:'calc.-' undefined in: X_1201:sht := calc.-(X_1200:bte); +# 19:31:40 > +# 19:31:40 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-22559" "--port=33270" +# 19:31:40 > -# 13:53:46 > -# 13:53:46 > "Done." -# 13:53:46 > +# 19:31:40 > +# 19:31:40 > "Done." +# 19:31:40 > diff --git a/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out b/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out --- a/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out +++ b/sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out @@ -1,79 +1,43 @@ stdout of test 'crash-dce.Bug-6330` in directory 'sql/test/BugTracker-2017` itself: -# 13:53:44 > -# 13:53:44 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=30094" "--set" "mapi_usock=/var/tmp/mtest-30656/.s.monetdb.30094" "--set" "monet_prompt=" "--forcemito" "--dbpath=/export/scratch2/dinther/INSTALL/var/MonetDB/mTests_sql_test_BugTracker-2017" "--set" "embedded_r=yes" "--set" "embedded_py=true" -# 13:53:44 > +# 19:31:40 > +# 19:31:40 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=33270" "--set" "mapi_usock=/var/tmp/mtest-22559/.s.monetdb.33270" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2017" +# 19:31:40 > -# MonetDB 5 server v11.25.24 +# MonetDB 5 server v11.27.0 # This is an unreleased version -# Serving database 'mTests_sql_test_BugTracker-2017', using 8 threads +# Serving database 'mTests_sql_test_BugTracker-2017', using 4 threads # Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers -# Found 15.588 GiB available main-memory. +# Found 7.331 GiB available main-memory. # Copyright (c) 1993-July 2008 CWI. # Copyright (c) August 2008-2017 MonetDB B.V., all rights reserved -# Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://toulouse.da.cwi.nl:30094/ -# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-30656/.s.monetdb.30094 +# Visit https://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://localhost.nes.nl:33270/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-22559/.s.monetdb.33270 # MonetDB/GIS module loaded # MonetDB/SQL module loaded -# MonetDB/Python 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: 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: 39_analytics_hge.sql -# loading sql script: 40_geom.sql -# loading sql script: 40_json.sql -# loading sql script: 40_json_hge.sql -# loading sql script: 41_md5sum.sql -# loading sql script: 45_uuid.sql -# loading sql script: 46_gsl.sql -# loading sql script: 46_profiler.sql -# loading sql script: 51_sys_schema_extension.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: 80_udf_hge.sql -# loading sql script: 85_bam.sql -# loading sql script: 90_generator.sql -# loading sql script: 90_generator_hge.sql -# loading sql script: 99_system.sql -# 13:53:45 > -# 13:53:45 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-30656" "--port=30094" -# 13:53:45 > +# 19:31:40 > +# 19:31:40 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-22559" "--port=33270" +# 19:31:40 > +#SELECT 45 - - CASE + + 70 WHEN COUNT ( * ) + SUM ( DISTINCT 91 ) + MIN ( DISTINCT 41 ) / 65 THEN + 98 END * + - 0 - - COUNT ( * ) AS col0; +% .L7 # table_name +% col0 # name +% hugeint # type +% 1 # length +[ NULL ] #SELECT 45 - CASE + + 70 WHEN COUNT ( * ) + SUM ( DISTINCT 91 ) + MIN ( DISTINCT 41 ) / 65 THEN + 98 END * + - 0 - - COUNT ( * ) AS col0; % .L7 # table_name % col0 # name % hugeint # type -% 2 # length -[ 46 ] +% 1 # length +[ NULL ] -# 13:53:46 > -# 13:53:46 > "Done." -# 13:53:46 > +# 19:31:40 > +# 19:31:40 > "Done." +# 19:31:40 > diff --git a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err --- a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err +++ b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err @@ -29,9 +29,6 @@ stderr of test 'crash-select_after_MAL_e # 14:22:38 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-11002" "--port=36959" # 14:22:38 > -MAPI = (monetdb) /var/tmp/mtest-11002/.s.monetdb.36959 -QUERY = SELECT DISTINCT col1 * + + col1 + + col2 * 0 / + - CAST ( + - col0 AS INTEGER ) AS col1 FROM tab0 cor0; -ERROR = !TypeException:user.main[19]:'bat.append' undefined in: bat.append(X_1274:bat[:lng],X_1280:bte); # 14:22:39 > diff --git a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out --- a/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out +++ b/sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out @@ -69,11 +69,14 @@ Ready. # 14:22:38 > #CREATE TABLE tab0(col0 INTEGER, col1 INTEGER, col2 INTEGER); +#SELECT DISTINCT col1 * + + col1 + + col2 * 0 / + - CAST ( + - col0 AS INTEGER ) AS col1 FROM tab0 cor0; +% sys.L3 # table_name +% col1 # name +% hugeint # type +% 1 # length #SELECT ALL + 93 + col0 FROM tab0 AS cor0; -% sys. # table_name -# sys.L2 # table_name -% L # name -# L2 # name +% sys.L2 # table_name +% L2 # name % bigint # type % 1 # length #DROP TABLE tab0; diff --git a/sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.stable.err b/sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.stable.err --- a/sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.stable.err +++ b/sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.stable.err @@ -29,23 +29,6 @@ stderr of test 'nestedoperators.Bug-6292 # 15:14:18 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-18530" "--port=30197" # 15:14:18 > -#~ MAPI = (monetdb) /var/tmp/mtest-32632/.s.monetdb.36482 -QUERY = CREATE FUNCTION rooms_derivative( stride bigint) - RETURNS TABLE( - time timestamp, - room string, - level integer, - temp double) - BEGIN - RETURN - WITH bounds(first, last, period) - AS (SELECT min(time) AS mintime, max(time) as maxtime, epoch(time)/60 AS period FROM rooms GROUP BY period) - SELECT r2.time, r2.room, r2.level, (r2.temp - r1.temp)/ (epoch(bounds.last) - epoch(bounds.first)) FROM bounds, rooms r1, rooms r2 - WHERE r1.time = bounds.first and r2.time = bounds.last and r1.room = r2.room and r1.level = r2.level; -ERROR = !SELECT: too many nested operators -#~ MAPI = (monetdb) /var/tmp/mtest-32632/.s.monetdb.36482 -QUERY = DROP FUNCTION rooms_derivative; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list