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

Reply via email to