Changeset: 64e88b8fedac for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=64e88b8fedac
Added Files:
        sql/test/BugTracker-2014/Tests/aggregates-intervals.Bug-3533.sql
        sql/test/BugTracker-2014/Tests/aggregates-intervals.Bug-3533.stable.err
        sql/test/BugTracker-2014/Tests/aggregates-intervals.Bug-3533.stable.out
        sql/test/BugTracker-2017/Tests/heapextend.Bug-6134.stable.err
        sql/test/BugTracker-2017/Tests/heapextend.Bug-6134.stable.out
Removed Files:
        sql/test/BugTracker-2016/Tests/consolidated_table.Bug-3954.sql
        sql/test/BugTracker-2017/Tests/multiplevalues.Bug-6336.sql
Modified Files:
        gdk/ChangeLog.Apr2019
        gdk/ChangeLog.Nov2019
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/39_analytics.sql
        sql/server/rel_dump.c
        sql/server/rel_optimizer.c
        sql/server/rel_partition.c
        sql/server/sql_partition.c
        sql/test/BugTracker-2014/Tests/All
        sql/test/BugTracker-2017/Tests/All
        sql/test/BugTracker-2017/Tests/heapextend.Bug-6134.sql.in
        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/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
        sql/test/xquery/Tests/create.sql
        sql/test/xquery/Tests/drop.sql
        tools/merovingian/ChangeLog.Apr2019
        tools/merovingian/ChangeLog.Nov2019
Branch: default
Log Message:

Merge with Nov2019


diffs (truncated from 1868 to 300 lines):

diff --git a/gdk/ChangeLog.Apr2019 b/gdk/ChangeLog.Apr2019
--- a/gdk/ChangeLog.Apr2019
+++ b/gdk/ChangeLog.Apr2019
@@ -1,3 +1,3 @@
-# ChangeLog file for MonetDB
+# ChangeLog file for gdk
 # This file is updated with Maddlog
 
diff --git a/gdk/ChangeLog.Nov2019 b/gdk/ChangeLog.Nov2019
--- a/gdk/ChangeLog.Nov2019
+++ b/gdk/ChangeLog.Nov2019
@@ -1,4 +1,4 @@
-# ChangeLog file for MonetDB
+# ChangeLog file for gdk
 # This file is updated with Maddlog
 
 * Sun Sep  8 2019 Sjoerd Mullender <sjo...@acm.org>
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
@@ -2062,7 +2062,7 @@ bailout:
 static str
 sql_update_nov2019(Client c, mvc *sql, const char *prev_schema, bool 
*systabfixed)
 {
-       size_t bufsize = 8192, pos = 0;
+       size_t bufsize = 16384, pos = 0;
        char *err = NULL, *buf = GDKmalloc(bufsize);
        res_table *output;
        BAT *b;
@@ -2241,6 +2241,51 @@ sql_update_nov2019(Client c, mvc *sql, c
                        "update sys.functions set system = true where schema_id 
= (select id from sys.schemas where name = 'wlr')"
                        " and name in ('master', 'stop', 'accept', 'replicate', 
'beat') and type = %d;\n", (int) F_PROC);
 
+       /* 39_analytics.sql */
+       pos += snprintf(buf + pos, bufsize - pos,
+                       "create aggregate stddev_samp(val INTERVAL SECOND) 
returns DOUBLE\n"
+                       "external name \"aggr\".\"stdev\";\n"
+                       "GRANT EXECUTE ON AGGREGATE stddev_samp(INTERVAL 
SECOND) TO PUBLIC;\n"
+                       "create aggregate stddev_samp(val INTERVAL MONTH) 
returns DOUBLE\n"
+                       "external name \"aggr\".\"stdev\";\n"
+                       "GRANT EXECUTE ON AGGREGATE stddev_samp(INTERVAL MONTH) 
TO PUBLIC;\n"
+
+                       "create aggregate stddev_pop(val INTERVAL SECOND) 
returns DOUBLE\n"
+                       "external name \"aggr\".\"stdevp\";\n"
+                       "GRANT EXECUTE ON AGGREGATE stddev_pop(INTERVAL SECOND) 
TO PUBLIC;\n"
+                       "create aggregate stddev_pop(val INTERVAL MONTH) 
returns DOUBLE\n"
+                       "external name \"aggr\".\"stdevp\";\n"
+                       "GRANT EXECUTE ON AGGREGATE stddev_pop(INTERVAL MONTH) 
TO PUBLIC;\n"
+
+                       "create aggregate var_samp(val INTERVAL SECOND) returns 
DOUBLE\n"
+                       "external name \"aggr\".\"variance\";\n"
+                       "GRANT EXECUTE ON AGGREGATE var_samp(INTERVAL SECOND) 
TO PUBLIC;\n"
+                       "create aggregate var_samp(val INTERVAL MONTH) returns 
DOUBLE\n"
+                       "external name \"aggr\".\"variance\";\n"
+                       "GRANT EXECUTE ON AGGREGATE var_samp(INTERVAL MONTH) TO 
PUBLIC;\n"
+
+                       "create aggregate var_pop(val INTERVAL SECOND) returns 
DOUBLE\n"
+                       "external name \"aggr\".\"variancep\";\n"
+                       "GRANT EXECUTE ON AGGREGATE var_pop(INTERVAL SECOND) TO 
PUBLIC;\n"
+                       "create aggregate var_pop(val INTERVAL MONTH) returns 
DOUBLE\n"
+                       "external name \"aggr\".\"variancep\";\n"
+                       "GRANT EXECUTE ON AGGREGATE var_pop(INTERVAL MONTH) TO 
PUBLIC;\n"
+
+                       "create aggregate median(val INTERVAL SECOND) returns 
INTERVAL SECOND\n"
+                       "external name \"aggr\".\"median\";\n"
+                       "GRANT EXECUTE ON AGGREGATE median(INTERVAL SECOND) TO 
PUBLIC;\n"
+                       "create aggregate median(val INTERVAL MONTH) returns 
INTERVAL MONTH\n"
+                       "external name \"aggr\".\"median\";\n"
+                       "GRANT EXECUTE ON AGGREGATE median(INTERVAL MONTH) TO 
PUBLIC;\n"
+
+                       "create aggregate quantile(val INTERVAL SECOND, q 
DOUBLE) returns INTERVAL SECOND\n"
+                       "external name \"aggr\".\"quantile\";\n"
+                       "GRANT EXECUTE ON AGGREGATE quantile(INTERVAL SECOND, 
DOUBLE) TO PUBLIC;\n"
+                       "create aggregate quantile(val INTERVAL MONTH, q 
DOUBLE) returns INTERVAL MONTH\n"
+                       "external name \"aggr\".\"quantile\";\n"
+                       "GRANT EXECUTE ON AGGREGATE quantile(INTERVAL MONTH, 
DOUBLE) TO PUBLIC;\n"
+               );
+
        /* The MAL implementation of functions json.text(string) and 
json.text(int) do not exist */
        pos += snprintf(buf + pos, bufsize - pos,
                        "drop function json.text(string);\n"
diff --git a/sql/scripts/39_analytics.sql b/sql/scripts/39_analytics.sql
--- a/sql/scripts/39_analytics.sql
+++ b/sql/scripts/39_analytics.sql
@@ -32,6 +32,12 @@ GRANT EXECUTE ON AGGREGATE stddev_samp(T
 create aggregate stddev_samp(val TIMESTAMP) returns DOUBLE
        external name "aggr"."stdev";
 GRANT EXECUTE ON AGGREGATE stddev_samp(TIMESTAMP) TO PUBLIC;
+create aggregate stddev_samp(val INTERVAL SECOND) returns DOUBLE
+       external name "aggr"."stdev";
+GRANT EXECUTE ON AGGREGATE stddev_samp(INTERVAL SECOND) TO PUBLIC;
+create aggregate stddev_samp(val INTERVAL MONTH) returns DOUBLE
+       external name "aggr"."stdev";
+GRANT EXECUTE ON AGGREGATE stddev_samp(INTERVAL MONTH) TO PUBLIC;
 
 create aggregate stddev_pop(val TINYINT) returns DOUBLE
        external name "aggr"."stdevp";
@@ -61,6 +67,12 @@ GRANT EXECUTE ON AGGREGATE stddev_pop(TI
 create aggregate stddev_pop(val TIMESTAMP) returns DOUBLE
        external name "aggr"."stdevp";
 GRANT EXECUTE ON AGGREGATE stddev_pop(TIMESTAMP) TO PUBLIC;
+create aggregate stddev_pop(val INTERVAL SECOND) returns DOUBLE
+       external name "aggr"."stdevp";
+GRANT EXECUTE ON AGGREGATE stddev_pop(INTERVAL SECOND) TO PUBLIC;
+create aggregate stddev_pop(val INTERVAL MONTH) returns DOUBLE
+       external name "aggr"."stdevp";
+GRANT EXECUTE ON AGGREGATE stddev_pop(INTERVAL MONTH) TO PUBLIC;
 
 create aggregate var_samp(val TINYINT) returns DOUBLE
        external name "aggr"."variance";
@@ -90,6 +102,12 @@ GRANT EXECUTE ON AGGREGATE var_samp(TIME
 create aggregate var_samp(val TIMESTAMP) returns DOUBLE
        external name "aggr"."variance";
 GRANT EXECUTE ON AGGREGATE var_samp(TIMESTAMP) TO PUBLIC;
+create aggregate var_samp(val INTERVAL SECOND) returns DOUBLE
+       external name "aggr"."variance";
+GRANT EXECUTE ON AGGREGATE var_samp(INTERVAL SECOND) TO PUBLIC;
+create aggregate var_samp(val INTERVAL MONTH) returns DOUBLE
+       external name "aggr"."variance";
+GRANT EXECUTE ON AGGREGATE var_samp(INTERVAL MONTH) TO PUBLIC;
 
 create aggregate var_pop(val TINYINT) returns DOUBLE
        external name "aggr"."variancep";
@@ -119,6 +137,12 @@ GRANT EXECUTE ON AGGREGATE var_pop(TIME)
 create aggregate var_pop(val TIMESTAMP) returns DOUBLE
        external name "aggr"."variancep";
 GRANT EXECUTE ON AGGREGATE var_pop(TIMESTAMP) TO PUBLIC;
+create aggregate var_pop(val INTERVAL SECOND) returns DOUBLE
+       external name "aggr"."variancep";
+GRANT EXECUTE ON AGGREGATE var_pop(INTERVAL SECOND) TO PUBLIC;
+create aggregate var_pop(val INTERVAL MONTH) returns DOUBLE
+       external name "aggr"."variancep";
+GRANT EXECUTE ON AGGREGATE var_pop(INTERVAL MONTH) TO PUBLIC;
 
 create aggregate median(val TINYINT) returns TINYINT
        external name "aggr"."median";
@@ -151,6 +175,12 @@ GRANT EXECUTE ON AGGREGATE median(TIME) 
 create aggregate median(val TIMESTAMP) returns TIMESTAMP
        external name "aggr"."median";
 GRANT EXECUTE ON AGGREGATE median(TIMESTAMP) TO PUBLIC;
+create aggregate median(val INTERVAL SECOND) returns INTERVAL SECOND
+       external name "aggr"."median";
+GRANT EXECUTE ON AGGREGATE median(INTERVAL SECOND) TO PUBLIC;
+create aggregate median(val INTERVAL MONTH) returns INTERVAL MONTH
+       external name "aggr"."median";
+GRANT EXECUTE ON AGGREGATE median(INTERVAL MONTH) TO PUBLIC;
 
 create aggregate quantile(val TINYINT, q DOUBLE) returns TINYINT
        external name "aggr"."quantile";
@@ -174,7 +204,6 @@ create aggregate quantile(val DOUBLE, q 
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DOUBLE, DOUBLE) TO PUBLIC;
 
-
 create aggregate quantile(val DATE, q DOUBLE) returns DATE
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(DATE, DOUBLE) TO PUBLIC;
@@ -184,6 +213,12 @@ GRANT EXECUTE ON AGGREGATE quantile(TIME
 create aggregate quantile(val TIMESTAMP, q DOUBLE) returns TIMESTAMP
        external name "aggr"."quantile";
 GRANT EXECUTE ON AGGREGATE quantile(TIMESTAMP, DOUBLE) TO PUBLIC;
+create aggregate quantile(val INTERVAL SECOND, q DOUBLE) returns INTERVAL 
SECOND
+       external name "aggr"."quantile";
+GRANT EXECUTE ON AGGREGATE quantile(INTERVAL SECOND, DOUBLE) TO PUBLIC;
+create aggregate quantile(val INTERVAL MONTH, q DOUBLE) returns INTERVAL MONTH
+       external name "aggr"."quantile";
+GRANT EXECUTE ON AGGREGATE quantile(INTERVAL MONTH, DOUBLE) TO PUBLIC;
 
 create aggregate median_avg(val TINYINT) returns DOUBLE
        external name "aggr"."median_avg";
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -447,19 +447,23 @@ rel_print_(mvc *sql, stream  *fout, sql_
                if (need_distinct(rel))
                        mnstr_printf(fout, "distinct ");
                mnstr_printf(fout, "%s (", r);
-               if (rel_is_ref(rel->l)) {
-                       int nr = find_ref(refs, rel->l);
-                       print_indent(sql, fout, depth+1, decorate);
-                       mnstr_printf(fout, "& REF %d ", nr);
-               } else
-                       rel_print_(sql, fout, rel->l, depth+1, refs, decorate);
+               if (rel->l) {
+                       if (rel_is_ref(rel->l)) {
+                               int nr = find_ref(refs, rel->l);
+                               print_indent(sql, fout, depth+1, decorate);
+                               mnstr_printf(fout, "& REF %d ", nr);
+                       } else
+                               rel_print_(sql, fout, rel->l, depth+1, refs, 
decorate);
+               }
                mnstr_printf(fout, ",");
-               if (rel_is_ref(rel->r)) {
-                       int nr = find_ref(refs, rel->r);
-                       print_indent(sql, fout, depth+1, decorate);
-                       mnstr_printf(fout, "& REF %d  ", nr);
-               } else
-                       rel_print_(sql, fout, rel->r, depth+1, refs, decorate);
+               if (rel->r) {
+                       if (rel_is_ref(rel->r)) {
+                               int nr = find_ref(refs, rel->r);
+                               print_indent(sql, fout, depth+1, decorate);
+                               mnstr_printf(fout, "& REF %d  ", nr);
+                       } else
+                               rel_print_(sql, fout, rel->r, depth+1, refs, 
decorate);
+               }
                print_indent(sql, fout, depth, decorate);
                mnstr_printf(fout, ")");
                exps_print(sql, fout, rel->exps, depth, refs, 1, 0);
@@ -519,13 +523,14 @@ rel_print_(mvc *sql, stream  *fout, sql_
                                                                                
                   drop_action ? "cascade" : "restrict");
                }
 
-               if (rel_is_ref(rel->l)) {
-                       int nr = find_ref(refs, rel->l);
-                       print_indent(sql, fout, depth+1, decorate);
-                       mnstr_printf(fout, "& REF %d ", nr);
-               } else
-                       rel_print_(sql, fout, rel->l, depth+1, refs, decorate);
-
+               if (rel->l) {
+                       if (rel_is_ref(rel->l)) {
+                               int nr = find_ref(refs, rel->l);
+                               print_indent(sql, fout, depth+1, decorate);
+                               mnstr_printf(fout, "& REF %d ", nr);
+                       } else
+                               rel_print_(sql, fout, rel->l, depth+1, refs, 
decorate);
+               }
                if (rel->r) {
                        if (rel_is_ref(rel->r)) {
                                int nr = find_ref(refs, rel->r);
@@ -566,23 +571,23 @@ rel_print_refs(mvc *sql, stream* fout, s
        case op_table:
                break;
        case op_ddl:
-               if(rel->flag == ddl_list ||rel->flag == ddl_exception) {
-                       if(rel->l) {
+               if (rel->flag == ddl_list || rel->flag == ddl_exception) {
+                       if (rel->l) {
                                rel_print_refs(sql, fout, rel->l, depth, refs, 
decorate);
-                               if(rel_is_ref(rel->l) && !find_ref(refs, 
rel->l)) {
+                               if (rel_is_ref(rel->l) && !find_ref(refs, 
rel->l)) {
                                        rel_print_(sql, fout, rel->l, depth, 
refs, decorate);
                                        list_append(refs, rel->l);
                                }
                        }
-                       if(rel->r) {
+                       if (rel->r) {
                                rel_print_refs(sql, fout, rel->r, depth, refs, 
decorate);
-                               if(rel_is_ref(rel->r) && !find_ref(refs, 
rel->r)) {
+                               if (rel_is_ref(rel->r) && !find_ref(refs, 
rel->r)) {
                                        rel_print_(sql, fout, rel->r, depth, 
refs, decorate);
                                        list_append(refs, rel->r);
                                }
                        }
                }
-       break;
+               break;
        case op_join:
        case op_left:
        case op_right:
@@ -592,13 +597,15 @@ rel_print_refs(mvc *sql, stream* fout, s
        case op_union:
        case op_inter:
        case op_except:
-               rel_print_refs(sql, fout, rel->l, depth, refs, decorate);
-               rel_print_refs(sql, fout, rel->r, depth, refs, decorate);
-               if (rel_is_ref(rel->l) && !find_ref(refs, rel->l)) {
+               if (rel->l)
+                       rel_print_refs(sql, fout, rel->l, depth, refs, 
decorate);
+               if (rel->r)
+                       rel_print_refs(sql, fout, rel->r, depth, refs, 
decorate);
+               if (rel->l && rel_is_ref(rel->l) && !find_ref(refs, rel->l)) {
                        rel_print_(sql, fout, rel->l, depth, refs, decorate);
                        list_append(refs, rel->l);
                }
-               if (rel_is_ref(rel->r) && !find_ref(refs, rel->r)) {
+               if (rel->r && rel_is_ref(rel->r) && !find_ref(refs, rel->r)) {
                        rel_print_(sql, fout, rel->r, depth, refs, decorate);
                        list_append(refs, rel->r);
                }
@@ -608,7 +615,8 @@ rel_print_refs(mvc *sql, stream* fout, s
        case op_groupby:
        case op_topn:
        case op_sample:
-               rel_print_refs(sql, fout, rel->l, depth, refs, decorate);
+               if (rel->l)
+                       rel_print_refs(sql, fout, rel->l, depth, refs, 
decorate);
                if (rel->l && rel_is_ref(rel->l) && !find_ref(refs, rel->l)) {
                        rel_print_(sql, fout, rel->l, depth, refs, decorate);
                        list_append(refs, rel->l);
@@ -618,12 +626,14 @@ rel_print_refs(mvc *sql, stream* fout, s
        case op_update:
        case op_delete:
        case op_truncate:
-               rel_print_refs(sql, fout, rel->l, depth, refs, decorate);
+               if (rel->l)
+                       rel_print_refs(sql, fout, rel->l, depth, refs, 
decorate);
                if (rel->l && rel_is_ref(rel->l) && !find_ref(refs, rel->l)) {
                        rel_print_(sql, fout, rel->l, depth, refs, decorate);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to