Changeset: 0f58d320e8d2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0f58d320e8d2 Modified Files: sql/backends/monet5/sql_upgrades.c sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 Branch: Aug2024 Log Message:
Fix database upgrade for Aug2024 database. Especially, the non-hugeint to with-hugeint upgrade. diffs (truncated from 997 to 300 lines): 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 @@ -240,7 +240,9 @@ sql_update_hugeint(Client c, mvc *sql) "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"); + "external name generator.series;\n" + "grant execute on function sys.generate_series(hugeint, hugeint) to public;\n" + "grant execute on function sys.generate_series(hugeint, hugeint, hugeint) to public;\n"); /* 39_analytics_hge.sql */ pos += snprintf(buf + pos, bufsize - pos, @@ -297,7 +299,19 @@ sql_update_hugeint(Client c, mvc *sql) "GRANT EXECUTE ON AGGREGATE corr(HUGEINT, HUGEINT) TO PUBLIC;\n" "create window corr(e1 HUGEINT, e2 HUGEINT) returns DOUBLE\n" " external name \"sql\".\"corr\";\n" - "GRANT EXECUTE ON WINDOW corr(HUGEINT, HUGEINT) TO PUBLIC;\n"); + "GRANT EXECUTE ON WINDOW corr(HUGEINT, HUGEINT) TO PUBLIC;\n" + "create aggregate median(val DECIMAL(38)) returns DECIMAL(38)\n" + " external name \"aggr\".\"median\";\n" + "GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC;\n" + "create aggregate median_avg(val DECIMAL(38)) returns DOUBLE\n" + " external name \"aggr\".\"median_avg\";\n" + "GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC;\n" + "create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38)\n" + " external name \"aggr\".\"quantile\";\n" + "GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC;\n" + "create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE\n" + " external name \"aggr\".\"quantile_avg\";\n" + "GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(38), DOUBLE) TO PUBLIC;\n"); /* 40_json_hge.sql */ pos += snprintf(buf + pos, bufsize - pos, @@ -306,9 +320,9 @@ sql_update_hugeint(Client c, mvc *sql) "GRANT EXECUTE ON FUNCTION json.filter(json, hugeint) TO PUBLIC;\n"); pos += snprintf(buf + pos, bufsize - pos, - "update sys.functions set system = true where system <> true and name in ('generate_series') and schema_id = (select id from sys.schemas where name = 'sys') and type = %d;\n" - "update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'median', 'median_avg', 'quantile', 'quantile_avg', 'corr') and schema_id = (select id from sys.schemas where name = 'sys') and type = %d;\n" - "update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'corr') and schema_id = (select id from sys.schemas where name = 'sys') and type = %d;\n" + "update sys.functions set system = true where system <> true and name in ('generate_series') and schema_id = 2000 and type = %d;\n" + "update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'median', 'median_avg', 'quantile', 'quantile_avg', 'corr') and schema_id = 2000 and type = %d;\n" + "update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'corr') and schema_id = 2000 and type = %d;\n" "update sys.functions set system = true where system <> true and name = 'filter' and schema_id = (select id from sys.schemas where name = 'json') and type = %d;\n", (int) F_UNION, (int) F_AGGR, (int) F_ANALYTIC, (int) F_FUNC); @@ -4892,11 +4906,6 @@ sql_update_aug2024(Client c, mvc *sql, s "create aggregate median(val DECIMAL(18)) returns DECIMAL(18)\n" " external name \"aggr\".\"median\";\n" "GRANT EXECUTE ON AGGREGATE median(DECIMAL(18)) TO PUBLIC;\n" -#ifdef HAVE_HGE - "create aggregate median(val DECIMAL(38)) returns DECIMAL(38)\n" - " external name \"aggr\".\"median\";\n" - "GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC;\n" -#endif "create aggregate median_avg(val DECIMAL(2)) returns DOUBLE\n" " external name \"aggr\".\"median_avg\";\n" "GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(2)) TO PUBLIC;\n" @@ -4909,11 +4918,6 @@ sql_update_aug2024(Client c, mvc *sql, s "create aggregate median_avg(val DECIMAL(18)) returns DOUBLE\n" " external name \"aggr\".\"median_avg\";\n" "GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(18)) TO PUBLIC;\n" -#ifdef HAVE_HGE - "create aggregate median_avg(val DECIMAL(38)) returns DOUBLE\n" - " external name \"aggr\".\"median_avg\";\n" - "GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC;\n" -#endif "create aggregate quantile(val DECIMAL(2), q DOUBLE) returns DECIMAL(2)\n" " external name \"aggr\".\"quantile\";\n" "GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(2), DOUBLE) TO PUBLIC;\n" @@ -4926,11 +4930,6 @@ sql_update_aug2024(Client c, mvc *sql, s "create aggregate quantile(val DECIMAL(18), q DOUBLE) returns DECIMAL(18)\n" " external name \"aggr\".\"quantile\";\n" "GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(18), DOUBLE) TO PUBLIC;\n" -#ifdef HAVE_HGE - "create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38)\n" - " external name \"aggr\".\"quantile\";\n" - "GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC;\n" -#endif "create aggregate quantile_avg(val DECIMAL(2), q DOUBLE) returns DOUBLE\n" " external name \"aggr\".\"quantile_avg\";\n" "GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(2), DOUBLE) TO PUBLIC;\n" @@ -4943,11 +4942,6 @@ sql_update_aug2024(Client c, mvc *sql, s "create aggregate quantile_avg(val DECIMAL(18), q DOUBLE) returns DOUBLE\n" " external name \"aggr\".\"quantile_avg\";\n" "GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(18), DOUBLE) TO PUBLIC;\n" -#ifdef HAVE_HGE - "create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE\n" - " external name \"aggr\".\"quantile_avg\";\n" - "GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(38), DOUBLE) TO PUBLIC;\n" -#endif "drop function if exists sys.time_to_str(time with time zone, string) cascade;\n" "drop function if exists sys.timestamp_to_str(timestamp with time zone, string) cascade;\n" "create function time_to_str(d time, format string) returns string\n" @@ -5266,6 +5260,35 @@ sql_update_aug2024(Client c, mvc *sql, s printf("Running database upgrade commands:\n%s\n", query1); fflush(stdout); err = SQLstatementIntern(c, query1, "update", true, false, NULL); +#ifdef HAVE_HGE + if (err == MAL_SUCCEED) { + sql_subtype tp; + sql_find_subtype(&tp, "decimal", 38, 0); + if (!sql_bind_func(sql, s->base.name, "median", &tp, NULL, F_AGGR, true, true)) { + sql->session->status = 0; + sql->errstr[0] = '\0'; + const char query0[] = + "create aggregate median(val DECIMAL(38)) returns DECIMAL(38)\n" + " external name \"aggr\".\"median\";\n" + "GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC;\n" + "create aggregate median_avg(val DECIMAL(38)) returns DOUBLE\n" + " external name \"aggr\".\"median_avg\";\n" + "GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC;\n" + "create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38)\n" + " external name \"aggr\".\"quantile\";\n" + "GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC;\n" + "create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE\n" + " external name \"aggr\".\"quantile_avg\";\n" + "GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(38), DOUBLE) TO PUBLIC;\n" + "grant execute on function sys.generate_series(hugeint, hugeint) to public;\n" + "grant execute on function sys.generate_series(hugeint, hugeint, hugeint) to public;\n" + "update sys.functions set system = true where system <> true and schema_id = 2000 and name in ('median', 'median_avg', 'quantile', 'quantile_avg');\n"; + printf("Running database upgrade commands:\n%s\n", query0); + fflush(stdout); + err = SQLstatementIntern(c, query0, "update", true, false, NULL); + } + } +#endif if (err == MAL_SUCCEED) { sql_subtype tp; sql_find_subtype(&tp, "smallint", 0, 0); @@ -5279,7 +5302,7 @@ sql_update_aug2024(Client c, mvc *sql, s "create function sys.generate_series(first smallint, \"limit\" smallint, stepsize smallint)\n" "returns table (value smallint)\n" "external name generator.series;\n" - "update sys.functions set system = true where system <> true and name in ('generate_series') and schema_id = (select id from sys.schemas where name = 'sys');\n"; + "update sys.functions set system = true where system <> true and name in ('generate_series') and schema_id = 2000;\n"; printf("Running database upgrade commands:\n%s\n", query); fflush(stdout); err = SQLstatementIntern(c, query, "update", true, false, NULL); @@ -5308,10 +5331,6 @@ sql_update_aug2024(Client c, mvc *sql, s "grant execute on function sys.generate_series(date, date, interval day) to public;\n" "grant execute on function sys.generate_series(timestamp, timestamp, interval second) to public;\n" "grant execute on function sys.generate_series(timestamp, timestamp, interval day) to public;\n" -#ifdef HAVE_HGE - "grant execute on function sys.generate_series(hugeint, hugeint) to public;\n" - "grant execute on function sys.generate_series(hugeint, hugeint, hugeint) to public;\n" -#endif "update sys.functions set system = true where system <> true and name = 'generate_series' and schema_id = 2000;\n"; sql->session->status = 0; sql->errstr[0] = '\0'; diff --git a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 --- a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 +++ b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 @@ -29,9 +29,6 @@ GRANT EXECUTE ON AGGREGATE median(DECIMA create aggregate median(val DECIMAL(18)) returns DECIMAL(18) external name "aggr"."median"; GRANT EXECUTE ON AGGREGATE median(DECIMAL(18)) TO PUBLIC; -create aggregate median(val DECIMAL(38)) returns DECIMAL(38) - external name "aggr"."median"; -GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC; create aggregate median_avg(val DECIMAL(2)) returns DOUBLE external name "aggr"."median_avg"; GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(2)) TO PUBLIC; @@ -44,9 +41,6 @@ GRANT EXECUTE ON AGGREGATE median_avg(DE create aggregate median_avg(val DECIMAL(18)) returns DOUBLE external name "aggr"."median_avg"; GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(18)) TO PUBLIC; -create aggregate median_avg(val DECIMAL(38)) returns DOUBLE - external name "aggr"."median_avg"; -GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC; create aggregate quantile(val DECIMAL(2), q DOUBLE) returns DECIMAL(2) external name "aggr"."quantile"; GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(2), DOUBLE) TO PUBLIC; @@ -59,9 +53,6 @@ GRANT EXECUTE ON AGGREGATE quantile(DECI create aggregate quantile(val DECIMAL(18), q DOUBLE) returns DECIMAL(18) external name "aggr"."quantile"; GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(18), DOUBLE) TO PUBLIC; -create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38) - external name "aggr"."quantile"; -GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC; create aggregate quantile_avg(val DECIMAL(2), q DOUBLE) returns DOUBLE external name "aggr"."quantile_avg"; GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(2), DOUBLE) TO PUBLIC; @@ -74,9 +65,6 @@ GRANT EXECUTE ON AGGREGATE quantile_avg( create aggregate quantile_avg(val DECIMAL(18), q DOUBLE) returns DOUBLE external name "aggr"."quantile_avg"; GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(18), DOUBLE) TO PUBLIC; -create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE - external name "aggr"."quantile_avg"; -GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(38), DOUBLE) TO PUBLIC; drop function if exists sys.time_to_str(time with time zone, string) cascade; drop function if exists sys.timestamp_to_str(timestamp with time zone, string) cascade; create function time_to_str(d time, format string) returns string @@ -376,6 +364,23 @@ update sys.functions set system = true w update sys._tables set system = true where not system and schema_id = 2000 and name in ('dump_comments', 'dump_tables', 'dump_functions', 'dump_function_grants', 'describe_functions', 'describe_privileges', 'describe_comments', 'fully_qualified_functions', 'describe_tables'); Running database upgrade commands: +create aggregate median(val DECIMAL(38)) returns DECIMAL(38) + external name "aggr"."median"; +GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC; +create aggregate median_avg(val DECIMAL(38)) returns DOUBLE + external name "aggr"."median_avg"; +GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC; +create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38) + external name "aggr"."quantile"; +GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC; +create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE + external name "aggr"."quantile_avg"; +GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(38), DOUBLE) TO PUBLIC; +grant execute on function sys.generate_series(hugeint, hugeint) to public; +grant execute on function sys.generate_series(hugeint, hugeint, hugeint) to public; +update sys.functions set system = true where system <> true and schema_id = 2000 and name in ('median', 'median_avg', 'quantile', 'quantile_avg'); + +Running database upgrade commands: create function sys.generate_series(first date, "limit" date, stepsize interval month) returns table (value date) external name generator.series; @@ -397,8 +402,6 @@ grant execute on function sys.generate_s grant execute on function sys.generate_series(date, date, interval day) to public; grant execute on function sys.generate_series(timestamp, timestamp, interval second) to public; grant execute on function sys.generate_series(timestamp, timestamp, interval day) to public; -grant execute on function sys.generate_series(hugeint, hugeint) to public; -grant execute on function sys.generate_series(hugeint, hugeint, hugeint) to public; update sys.functions set system = true where system <> true and name = 'generate_series' and schema_id = 2000; Running database upgrade commands: diff --git a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 --- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 +++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 @@ -7,6 +7,8 @@ external name generator.series; create function sys.generate_series(first hugeint, "limit" hugeint, stepsize hugeint) returns table (value hugeint) external name generator.series; +grant execute on function sys.generate_series(hugeint, hugeint) to public; +grant execute on function sys.generate_series(hugeint, hugeint, hugeint) to public; create aggregate stddev_samp(val HUGEINT) returns DOUBLE external name "aggr"."stdev"; GRANT EXECUTE ON AGGREGATE stddev_samp(HUGEINT) TO PUBLIC; @@ -61,12 +63,24 @@ GRANT EXECUTE ON AGGREGATE corr(HUGEINT, create window corr(e1 HUGEINT, e2 HUGEINT) returns DOUBLE external name "sql"."corr"; GRANT EXECUTE ON WINDOW corr(HUGEINT, HUGEINT) TO PUBLIC; +create aggregate median(val DECIMAL(38)) returns DECIMAL(38) + external name "aggr"."median"; +GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC; +create aggregate median_avg(val DECIMAL(38)) returns DOUBLE + external name "aggr"."median_avg"; +GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC; +create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38) + external name "aggr"."quantile"; +GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC; +create aggregate quantile_avg(val DECIMAL(38), q DOUBLE) returns DOUBLE + external name "aggr"."quantile_avg"; +GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(38), DOUBLE) TO PUBLIC; create function json.filter(js json, name hugeint) returns json external name json.filter; GRANT EXECUTE ON FUNCTION json.filter(json, hugeint) TO PUBLIC; -update sys.functions set system = true where system <> true and name in ('generate_series') and schema_id = (select id from sys.schemas where name = 'sys') and type = 5; -update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'median', 'median_avg', 'quantile', 'quantile_avg', 'corr') and schema_id = (select id from sys.schemas where name = 'sys') and type = 3; -update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'corr') and schema_id = (select id from sys.schemas where name = 'sys') and type = 6; +update sys.functions set system = true where system <> true and name in ('generate_series') and schema_id = 2000 and type = 5; +update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'median', 'median_avg', 'quantile', 'quantile_avg', 'corr') and schema_id = 2000 and type = 3; +update sys.functions set system = true where system <> true and name in ('stddev_samp', 'stddev_pop', 'var_samp', 'covar_samp', 'var_pop', 'covar_pop', 'corr') and schema_id = 2000 and type = 6; update sys.functions set system = true where system <> true and name = 'filter' and schema_id = (select id from sys.schemas where name = 'json') and type = 1; Running database upgrade commands: @@ -98,9 +112,6 @@ GRANT EXECUTE ON AGGREGATE median(DECIMA create aggregate median(val DECIMAL(18)) returns DECIMAL(18) external name "aggr"."median"; GRANT EXECUTE ON AGGREGATE median(DECIMAL(18)) TO PUBLIC; -create aggregate median(val DECIMAL(38)) returns DECIMAL(38) - external name "aggr"."median"; -GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC; create aggregate median_avg(val DECIMAL(2)) returns DOUBLE external name "aggr"."median_avg"; GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(2)) TO PUBLIC; @@ -113,9 +124,6 @@ GRANT EXECUTE ON AGGREGATE median_avg(DE create aggregate median_avg(val DECIMAL(18)) returns DOUBLE external name "aggr"."median_avg"; GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(18)) TO PUBLIC; -create aggregate median_avg(val DECIMAL(38)) returns DOUBLE - external name "aggr"."median_avg"; -GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(38)) TO PUBLIC; create aggregate quantile(val DECIMAL(2), q DOUBLE) returns DECIMAL(2) external name "aggr"."quantile"; GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(2), DOUBLE) TO PUBLIC; @@ -128,9 +136,6 @@ GRANT EXECUTE ON AGGREGATE quantile(DECI create aggregate quantile(val DECIMAL(18), q DOUBLE) returns DECIMAL(18) external name "aggr"."quantile"; GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(18), DOUBLE) TO PUBLIC; -create aggregate quantile(val DECIMAL(38), q DOUBLE) returns DECIMAL(38) - external name "aggr"."quantile"; -GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC; create aggregate quantile_avg(val DECIMAL(2), q DOUBLE) returns DOUBLE external name "aggr"."quantile_avg"; GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(2), DOUBLE) TO PUBLIC; @@ -143,9 +148,6 @@ GRANT EXECUTE ON AGGREGATE quantile_avg( create aggregate quantile_avg(val DECIMAL(18), q DOUBLE) returns DOUBLE _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org