Changeset: abb620c2ba47 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/abb620c2ba47 Modified Files: sql/scripts/39_analytics.sql sql/scripts/39_analytics_hge.sql sql/server/sql_semantic.c Branch: default Log Message:
add aggregates for all decimal types, this should make sure the smallest type versions could be used. diffs (137 lines): 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 @@ -254,9 +254,18 @@ GRANT EXECUTE ON AGGREGATE median(INTEGE create aggregate median(val BIGINT) returns BIGINT external name "aggr"."median"; GRANT EXECUTE ON AGGREGATE median(BIGINT) TO PUBLIC; -create aggregate median(val DECIMAL) returns DECIMAL +create aggregate median(val DECIMAL(2)) returns DECIMAL(2) + external name "aggr"."median"; +GRANT EXECUTE ON AGGREGATE median(DECIMAL(2)) TO PUBLIC; +create aggregate median(val DECIMAL(4)) returns DECIMAL(4) external name "aggr"."median"; -GRANT EXECUTE ON AGGREGATE median(DECIMAL) TO PUBLIC; +GRANT EXECUTE ON AGGREGATE median(DECIMAL(4)) TO PUBLIC; +create aggregate median(val DECIMAL(9)) returns DECIMAL(9) + external name "aggr"."median"; +GRANT EXECUTE ON AGGREGATE median(DECIMAL(9)) TO PUBLIC; +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 REAL) returns REAL external name "aggr"."median"; GRANT EXECUTE ON AGGREGATE median(REAL) TO PUBLIC; @@ -296,9 +305,18 @@ GRANT EXECUTE ON AGGREGATE quantile(INTE create aggregate quantile(val BIGINT, q DOUBLE) returns BIGINT external name "aggr"."quantile"; GRANT EXECUTE ON AGGREGATE quantile(BIGINT, DOUBLE) TO PUBLIC; -create aggregate quantile(val DECIMAL, q DOUBLE) returns DECIMAL +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; +create aggregate quantile(val DECIMAL(4), q DOUBLE) returns DECIMAL(4) external name "aggr"."quantile"; -GRANT EXECUTE ON AGGREGATE quantile(DECIMAL, DOUBLE) TO PUBLIC; +GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(4), DOUBLE) TO PUBLIC; +create aggregate quantile(val DECIMAL(9), q DOUBLE) returns DECIMAL(9) + external name "aggr"."quantile"; +GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(9), DOUBLE) TO PUBLIC; +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 REAL, q DOUBLE) returns REAL external name "aggr"."quantile"; GRANT EXECUTE ON AGGREGATE quantile(REAL, DOUBLE) TO PUBLIC; @@ -338,9 +356,18 @@ GRANT EXECUTE ON AGGREGATE median_avg(IN create aggregate median_avg(val BIGINT) returns DOUBLE external name "aggr"."median_avg"; GRANT EXECUTE ON AGGREGATE median_avg(BIGINT) TO PUBLIC; -create aggregate median_avg(val DECIMAL) returns DOUBLE +create aggregate median_avg(val DECIMAL(2)) returns DOUBLE + external name "aggr"."median_avg"; +GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(2)) TO PUBLIC; +create aggregate median_avg(val DECIMAL(4)) returns DOUBLE external name "aggr"."median_avg"; -GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL) TO PUBLIC; +GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(4)) TO PUBLIC; +create aggregate median_avg(val DECIMAL(9)) returns DOUBLE + external name "aggr"."median_avg"; +GRANT EXECUTE ON AGGREGATE median_avg(DECIMAL(9)) TO PUBLIC; +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 REAL) returns DOUBLE external name "aggr"."median_avg"; GRANT EXECUTE ON AGGREGATE median_avg(REAL) TO PUBLIC; @@ -361,9 +388,18 @@ GRANT EXECUTE ON AGGREGATE quantile_avg( create aggregate quantile_avg(val BIGINT, q DOUBLE) returns DOUBLE external name "aggr"."quantile_avg"; GRANT EXECUTE ON AGGREGATE quantile_avg(BIGINT, DOUBLE) TO PUBLIC; -create aggregate quantile_avg(val DECIMAL, q DOUBLE) returns DOUBLE +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; +create aggregate quantile_avg(val DECIMAL(4), q DOUBLE) returns DOUBLE external name "aggr"."quantile_avg"; -GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL, DOUBLE) TO PUBLIC; +GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(4), DOUBLE) TO PUBLIC; +create aggregate quantile_avg(val DECIMAL(9), q DOUBLE) returns DOUBLE + external name "aggr"."quantile_avg"; +GRANT EXECUTE ON AGGREGATE quantile_avg(DECIMAL(9), DOUBLE) TO PUBLIC; +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 REAL, q DOUBLE) returns DOUBLE external name "aggr"."quantile_avg"; GRANT EXECUTE ON AGGREGATE quantile_avg(REAL, DOUBLE) TO PUBLIC; diff --git a/sql/scripts/39_analytics_hge.sql b/sql/scripts/39_analytics_hge.sql --- a/sql/scripts/39_analytics_hge.sql +++ b/sql/scripts/39_analytics_hge.sql @@ -54,18 +54,34 @@ create aggregate median(val HUGEINT) ret external name "aggr"."median"; GRANT EXECUTE ON AGGREGATE median(HUGEINT) TO PUBLIC; +create aggregate median(val DECIMAL(38)) returns HUGEINT + external name "aggr"."median"; +GRANT EXECUTE ON AGGREGATE median(DECIMAL(38)) TO PUBLIC; + create aggregate quantile(val HUGEINT, q DOUBLE) returns HUGEINT external name "aggr"."quantile"; GRANT EXECUTE ON AGGREGATE quantile(HUGEINT, DOUBLE) TO PUBLIC; +create aggregate quantile(val DECIMAL(38), q DOUBLE) returns HUGEINT + external name "aggr"."quantile"; +GRANT EXECUTE ON AGGREGATE quantile(DECIMAL(38), DOUBLE) TO PUBLIC; + create aggregate median_avg(val HUGEINT) returns DOUBLE external name "aggr"."median_avg"; GRANT EXECUTE ON AGGREGATE median_avg(HUGEINT) 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_avg(val HUGEINT, q DOUBLE) returns DOUBLE external name "aggr"."quantile_avg"; GRANT EXECUTE ON AGGREGATE quantile_avg(HUGEINT, 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 aggregate corr(e1 HUGEINT, e2 HUGEINT) returns DOUBLE external name "aggr"."corr"; GRANT EXECUTE ON AGGREGATE corr(HUGEINT, HUGEINT) TO PUBLIC; diff --git a/sql/server/sql_semantic.c b/sql/server/sql_semantic.c --- a/sql/server/sql_semantic.c +++ b/sql/server/sql_semantic.c @@ -279,7 +279,7 @@ static sql_subfunc * sql_arg *rarg = tn->data; sql_subtype *res, *r = &rarg->type; - if (a->fix_scale == SCALE_EQ) { + if (a->fix_scale == SCALE_EQ && !IS_AGGR(a)) { res = r; } else { digits = r->digits; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org