Changeset: eb6ffc053080 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eb6ffc053080 Added Files: sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out sql/test/rename/Tests/rename10.sql sql/test/rename/Tests/rename10.stable.err sql/test/rename/Tests/rename10.stable.out Removed Files: sql/test/testdb-upgrade/Tests/upgrade.stable.out.powerpc64.int128 Modified Files: .hgtags MonetDB.spec NT/monetdb_config.h.in NT/rules.msc clients/R/Tests/All clients/mapilib/mapi.rc clients/odbc/driver/driver.rc clients/odbc/winsetup/setup.rc configure.ag debian/changelog gdk/libbat.rc libversions monetdb5/optimizer/opt_commonTerms.c monetdb5/tools/libmonetdb5.rc sql/backends/monet5/sql_upgrades.c sql/common/sql_types.c sql/include/sql_catalog.h sql/server/rel_optimizer.c sql/server/rel_optimizer.h sql/server/rel_unnest.c sql/server/sql_query.c sql/server/sql_query.h sql/storage/store.c sql/test/BugTracker-2008/Tests/auto_coersion_bug.SF-2075157.stable.out sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.stable.out sql/test/BugTracker-2019/Tests/subselect.Bug-6700.stable.out sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out sql/test/Tests/systemfunctions.stable.out sql/test/Tests/systemfunctions.stable.out.int128 sql/test/analytics/Tests/analytics09.stable.out sql/test/bugs/Tests/case_cast-bug-sf-1019506.stable.out sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128 sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/pg_regress/Tests/select_views.stable.out sql/test/rename/Tests/All sql/test/rename/Tests/rename09.stable.out sql/test/sql_xml/Tests/xml.stable.out sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-hge/Tests/dump.stable.out.int128 sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/dump.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 vertoo.data Branch: ipv6 Log Message:
Merge with default branch. diffs (truncated from 142963 to 300 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -722,3 +722,6 @@ a4e8c9372aa244d6a18c3ef8f1513905650d812c 8db7bfce6045f2ad86d5898946d3e712495c96a3 Apr2019_root 643dfa328c71d7891c8358b4969aa9ebf81e0f4c Apr2019_1 643dfa328c71d7891c8358b4969aa9ebf81e0f4c Apr2019_release +2c9089e1dde297caaf347bf27f88b10e5622a735 Apr2019_3 +643dfa328c71d7891c8358b4969aa9ebf81e0f4c Apr2019_release +2c9089e1dde297caaf347bf27f88b10e5622a735 Apr2019_release diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -1060,6 +1060,11 @@ done %postun -p /sbin/ldconfig %changelog +* Fri Apr 26 2019 Sjoerd Mullender <sjo...@acm.org> - 11.33.3-20190426 +- Rebuilt. +- BZ#6647: Add suport to Python 3 on Windows +- BZ#6696: Re-use of MAL explain plans with complex type coercions + * Fri Apr 05 2019 Sjoerd Mullender <sjo...@acm.org> - 11.33.1-20190405 - Rebuilt. - BZ#2403: stream: http read support in streams diff --git a/clients/R/Tests/All b/clients/R/Tests/All --- a/clients/R/Tests/All +++ b/clients/R/Tests/All @@ -3,6 +3,6 @@ HAVE_LIBR?install HAVE_LIBR?deps-test HAVE_LIBR?dbi #HAVE_LIBR?dplyr too slow -HAVE_LIBR?dplyr-flights +#HAVE_LIBR?dplyr-flights they keep changing this HAVE_LIBR?copy_into_fwf HAVE_LIBR&NOT_WIN32?dbapply diff --git a/debian/changelog b/debian/changelog --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +monetdb (11.33.3) unstable; urgency=low + + * Rebuilt. + * BZ#6647: Add suport to Python 3 on Windows + * BZ#6696: Re-use of MAL explain plans with complex type coercions + + -- Sjoerd Mullender <sjo...@acm.org> Fri, 26 Apr 2019 15:11:15 +0200 + monetdb (11.33.1) unstable; urgency=low * Rebuilt. diff --git a/libversions b/libversions --- a/libversions +++ b/libversions @@ -36,13 +36,13 @@ # version of the GDK library (subdirectory gdk; also includes # common/options and common/utils) -GDK_VERSION=18:0:0 +GDK_VERSION=18:1:0 # version of the MAPI library (subdirectory clients/mapilib) MAPI_VERSION=12:0:0 # version of the MONETDB5 library (subdirectory monetdb5, not including extras) -MONETDB5_VERSION=27:0:0 +MONETDB5_VERSION=27:1:0 # version of the STREAM library (subdirectory common/stream) -STREAM_VERSION=13:0:0 +STREAM_VERSION=13:1:0 diff --git a/monetdb5/optimizer/opt_commonTerms.c b/monetdb5/optimizer/opt_commonTerms.c --- a/monetdb5/optimizer/opt_commonTerms.c +++ b/monetdb5/optimizer/opt_commonTerms.c @@ -89,6 +89,12 @@ OPTcommonTermsImplementation(Client cntx pushInstruction(mb,p); continue; } + + /* when we enter a barrier block, we should ditch all previous instructions from consideration */ + if( p->barrier== BARRIERsymbol || p->barrier== CATCHsymbol || p->barrier == RETURNsymbol){ + memset(list, 0, sizeof(int) * mb->stop); + memset(hash, 0, sizeof(int) * mb->vtop); + } /* side-effect producing operators can never be replaced */ /* the same holds for function calls without an argument, it is unclear where the results comes from (e.g. clock()) */ if ( mayhaveSideEffects(cntxt, mb, p,TRUE) || p->argc == p->retc){ diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -191,7 +191,6 @@ sql_update_hugeint(Client c, mvc *sql) size_t bufsize = 8192, pos = 0; char *buf, *err; char *schema; - sql_schema *s; if ((err = sql_fix_system_tables(c, sql)) != NULL) return err; @@ -201,21 +200,18 @@ sql_update_hugeint(Client c, mvc *sql) schema = stack_get_string(sql, "current_schema"); - s = mvc_bind_schema(sql, "sys"); - pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n"); + /* 80_udf_hge.sql */ pos += snprintf(buf + pos, bufsize - pos, "create function fuse(one bigint, two bigint)\n" - "returns hugeint\n" - "external name udf.fuse;\n"); + "returns hugeint external name udf.fuse;\n"); + /* 90_generator_hge.sql */ pos += snprintf(buf + pos, bufsize - pos, "create function sys.generate_series(first hugeint, \"limit\" hugeint)\n" "returns table (value hugeint)\n" - "external name generator.series;\n"); - - pos += snprintf(buf + pos, bufsize - pos, + "external name generator.series;\n" "create function sys.generate_series(first hugeint, \"limit\" hugeint, stepsize hugeint)\n" "returns table (value hugeint)\n" "external name generator.series;\n"); @@ -223,58 +219,36 @@ sql_update_hugeint(Client c, mvc *sql) /* 39_analytics_hge.sql */ pos += snprintf(buf + pos, bufsize - pos, "create aggregate stddev_samp(val HUGEINT) returns DOUBLE\n" - " external name \"aggr\".\"stdev\";\n" + "\texternal name \"aggr\".\"stdev\";\n" + "GRANT EXECUTE ON AGGREGATE stddev_samp(HUGEINT) TO PUBLIC;\n" "create aggregate stddev_pop(val HUGEINT) returns DOUBLE\n" - " external name \"aggr\".\"stdevp\";\n" + "\texternal name \"aggr\".\"stdevp\";\n" + "GRANT EXECUTE ON AGGREGATE stddev_pop(HUGEINT) TO PUBLIC;\n" "create aggregate var_samp(val HUGEINT) returns DOUBLE\n" - " external name \"aggr\".\"variance\";\n" + "\texternal name \"aggr\".\"variance\";\n" + "GRANT EXECUTE ON AGGREGATE var_samp(HUGEINT) TO PUBLIC;\n" "create aggregate var_pop(val HUGEINT) returns DOUBLE\n" - " external name \"aggr\".\"variancep\";\n" + "\texternal name \"aggr\".\"variancep\";\n" + "GRANT EXECUTE ON AGGREGATE var_pop(HUGEINT) TO PUBLIC;\n" "create aggregate median(val HUGEINT) returns HUGEINT\n" - " external name \"aggr\".\"median\";\n" + "\texternal name \"aggr\".\"median\";\n" + "GRANT EXECUTE ON AGGREGATE median(HUGEINT) TO PUBLIC;\n" "create aggregate quantile(val HUGEINT, q DOUBLE) returns HUGEINT\n" - " external name \"aggr\".\"quantile\";\n" + "\texternal name \"aggr\".\"quantile\";\n" + "GRANT EXECUTE ON AGGREGATE quantile(HUGEINT, DOUBLE) TO PUBLIC;\n" "create aggregate corr(e1 HUGEINT, e2 HUGEINT) returns DOUBLE\n" - " external name \"aggr\".\"corr\";\n"); + "\texternal name \"aggr\".\"corr\";\n" + "GRANT EXECUTE ON AGGREGATE corr(HUGEINT, HUGEINT) TO PUBLIC;\n"); /* 40_json_hge.sql */ pos += snprintf(buf + pos, bufsize - pos, "create function json.filter(js json, name hugeint)\n" - "returns json\n" - "external name json.filter;\n"); - - pos += snprintf(buf + pos, bufsize - pos, - "drop view sys.tablestoragemodel;\n" - "create view sys.tablestoragemodel\n" - "as select \"schema\",\"table\",max(count) as \"count\",\n" - " sum(columnsize) as columnsize,\n" - " sum(heapsize) as heapsize,\n" - " sum(hashes) as hashes,\n" - " sum(\"imprints\") as \"imprints\",\n" - " sum(case when sorted = false then 8 * count else 0 end) as auxiliary\n" - "from sys.storagemodel() group by \"schema\",\"table\";\n"); + "returns json external name json.filter;\n" + "GRANT EXECUTE ON FUNCTION json.filter(json, hugeint) TO PUBLIC;\n"); pos += snprintf(buf + pos, bufsize - pos, "update sys.functions set system = true where name in ('fuse', 'generate_series', 'stddev_samp', 'stddev_pop', 'var_samp', 'var_pop', 'median', 'quantile', 'corr') and schema_id = (select id from sys.schemas where name = 'sys');\n" - "update sys.functions set system = true where name = 'filter' and schema_id = (select id from sys.schemas where name = 'json');\n" - "update sys._tables set system = true where name = 'tablestoragemodel' and schema_id = (select id from sys.schemas where name = 'sys');\n"); - - if (s != NULL) { - sql_table *t; - - if ((t = mvc_bind_table(sql, s, "tablestoragemodel")) != NULL) - t->system = 0; - } - - pos += snprintf(buf + pos, bufsize - pos, - "grant execute on aggregate sys.stddev_samp(hugeint) to public;\n" - "grant execute on aggregate sys.stddev_pop(hugeint) to public;\n" - "grant execute on aggregate sys.var_samp(hugeint) to public;\n" - "grant execute on aggregate sys.var_pop(hugeint) to public;\n" - "grant execute on aggregate sys.median(hugeint) to public;\n" - "grant execute on aggregate sys.quantile(hugeint, double) to public;\n" - "grant execute on aggregate sys.corr(hugeint, hugeint) to public;\n" - "grant execute on function json.filter(json, hugeint) to public;\n"); + "update sys.functions set system = true where name = 'filter' and schema_id = (select id from sys.schemas where name = 'json');\n"); if (schema) pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", schema); diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c --- a/sql/common/sql_types.c +++ b/sql/common/sql_types.c @@ -1551,6 +1551,17 @@ sqltypeinit( sql_allocator *sa) sql_create_func(sa, ">=", "calc", ">=", ANY, ANY, BIT, SCALE_FIX); sql_create_func(sa, "<", "calc", "<", ANY, ANY, BIT, SCALE_FIX); sql_create_func(sa, "<=", "calc", "<=", ANY, ANY, BIT, SCALE_FIX); + sres = create_arg(sa, NULL, sql_create_subtype(sa, BIT, 0, 0), ARG_OUT); + sql_create_func_(sa, "between", "calc", "between", + list_append(list_append (list_append (list_append(list_append(list_append(list_append(sa_list(sa), + create_arg(sa, NULL, sql_create_subtype(sa, ANY, 0, 0), ARG_IN)), + create_arg(sa, NULL, sql_create_subtype(sa, ANY, 0, 0), ARG_IN)), + create_arg(sa, NULL, sql_create_subtype(sa, ANY, 0, 0), ARG_IN)), + create_arg(sa, NULL, sql_create_subtype(sa, BIT, 0, 0), ARG_IN)), + create_arg(sa, NULL, sql_create_subtype(sa, BIT, 0, 0), ARG_IN)), + create_arg(sa, NULL, sql_create_subtype(sa, BIT, 0, 0), ARG_IN)), + create_arg(sa, NULL, sql_create_subtype(sa, BIT, 0, 0), ARG_IN)), + sres, FALSE, F_FUNC, SCALE_FIX); sql_create_aggr(sa, "zero_or_one", "sql", "zero_or_one", ANY, ANY); sql_create_aggr(sa, "all", "sql", "all", ANY, ANY); sql_create_aggr(sa, "null", "sql", "null", ANY, BIT); diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -610,7 +610,6 @@ typedef struct sql_moved_table { sql_schema *from; sql_schema *to; sql_table *t; - node *p; //need to iterate the list backwards } sql_moved_table; typedef struct res_col { 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 @@ -41,24 +41,6 @@ static sql_rel * rel_remove_empty_select static sql_subfunc *find_func( mvc *sql, char *name, list *exps ); -static int -exps_unique( list *exps ) -{ - node *n; - - if ((n = exps->h) != NULL) { - sql_exp *e = n->data; - prop *p; - - if (e && (p = find_prop(e->p, PROP_HASHCOL)) != NULL) { - sql_ukey *k = p->value; - if (k && list_length(k->k.columns) <= 1) - return 1; - } - } - return 0; -} - /* The important task of the relational optimizer is to optimize the join order. @@ -130,10 +112,11 @@ name_find_column( sql_rel *rel, const ch case op_left: case op_right: case op_full: + /* first right (possible subquery) */ + c = name_find_column( rel->r, rname, name, pnr, bt); + /* fall through */ case op_semi: case op_anti: - /* first right (possible subquery) */ - c = name_find_column( rel->r, rname, name, pnr, bt); if (!c) c = name_find_column( rel->l, rname, name, pnr, bt); return c; @@ -1207,6 +1190,9 @@ rel_join_order(mvc *sql, sql_rel *rel) if (is_join(rel->op) && rel->exps && !rel_is_ref(rel)) { rel = rewrite(sql, rel, &rel_remove_empty_select, &e_changes); rel = reorder_join(sql, rel); + } else if (is_join(rel->op)) { + rel->l = rel_join_order(sql, rel->l); + rel->r = rel_join_order(sql, rel->r); } (void)e_changes; return rel; @@ -2395,6 +2381,81 @@ exp_push_down_prj(mvc *sql, sql_exp *e, return NULL; } +static int +rel_is_unique( sql_rel *rel, sql_ukey *k) +{ + switch(rel->op) { + case op_left: + case op_right: + case op_full: + case op_join: + return 0; + case op_semi: + case op_anti: + return rel_is_unique(rel->l, k); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list