| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| -- |
| -- aggregate function components for stdev(internal, agtype) |
| -- and stdevp(internal, agtype) |
| -- |
| -- wrapper for the stdev final function to pass 0 instead of null |
| CREATE FUNCTION ag_catalog.age_float8_stddev_samp_aggfinalfn(_float8) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- wrapper for the float8_accum to use agtype input |
| CREATE FUNCTION ag_catalog.age_agtype_float8_accum(_float8, agtype) |
| RETURNS _float8 |
| LANGUAGE c |
| IMMUTABLE |
| STRICT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- aggregate definition for age_stdev(agtype) |
| CREATE AGGREGATE ag_catalog.age_stdev(agtype) |
| ( |
| stype = _float8, |
| sfunc = ag_catalog.age_agtype_float8_accum, |
| finalfunc = ag_catalog.age_float8_stddev_samp_aggfinalfn, |
| combinefunc = float8_combine, |
| finalfunc_modify = read_only, |
| initcond = '{0,0,0}', |
| parallel = safe |
| ); |
| |
| -- wrapper for the stdevp final function to pass 0 instead of null |
| CREATE FUNCTION ag_catalog.age_float8_stddev_pop_aggfinalfn(_float8) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- aggregate definition for age_stdevp(agtype) |
| CREATE AGGREGATE ag_catalog.age_stdevp(agtype) |
| ( |
| stype = _float8, |
| sfunc = age_agtype_float8_accum, |
| finalfunc = ag_catalog.age_float8_stddev_pop_aggfinalfn, |
| combinefunc = float8_combine, |
| finalfunc_modify = read_only, |
| initcond = '{0,0,0}', |
| parallel = safe |
| ); |
| |
| -- |
| -- aggregate function components for avg(agtype) and sum(agtype) |
| -- |
| -- aggregate definition for avg(agytpe) |
| CREATE AGGREGATE ag_catalog.age_avg(agtype) |
| ( |
| stype = _float8, |
| sfunc = ag_catalog.age_agtype_float8_accum, |
| finalfunc = float8_avg, |
| combinefunc = float8_combine, |
| finalfunc_modify = read_only, |
| initcond = '{0,0,0}', |
| parallel = safe |
| ); |
| |
| -- sum aggtransfn |
| CREATE FUNCTION ag_catalog.age_agtype_sum(agtype, agtype) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| STRICT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- aggregate definition for sum(agytpe) |
| CREATE AGGREGATE ag_catalog.age_sum(agtype) |
| ( |
| stype = agtype, |
| sfunc = ag_catalog.age_agtype_sum, |
| combinefunc = ag_catalog.age_agtype_sum, |
| finalfunc_modify = read_only, |
| parallel = safe |
| ); |
| |
| -- |
| -- aggregate functions for min(variadic "any") and max(variadic "any") |
| -- |
| -- max transfer function |
| CREATE FUNCTION ag_catalog.age_agtype_larger_aggtransfn(agtype, variadic "any") |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- aggregate definition for max(variadic "any") |
| CREATE AGGREGATE ag_catalog.age_max(variadic "any") |
| ( |
| stype = agtype, |
| sfunc = ag_catalog.age_agtype_larger_aggtransfn, |
| combinefunc = ag_catalog.age_agtype_larger_aggtransfn, |
| finalfunc_modify = read_only, |
| parallel = safe |
| ); |
| |
| -- min transfer function |
| CREATE FUNCTION ag_catalog.age_agtype_smaller_aggtransfn(agtype, variadic "any") |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- aggregate definition for min(variadic "any") |
| CREATE AGGREGATE ag_catalog.age_min(variadic "any") |
| ( |
| stype = agtype, |
| sfunc = ag_catalog.age_agtype_smaller_aggtransfn, |
| combinefunc = ag_catalog.age_agtype_smaller_aggtransfn, |
| finalfunc_modify = read_only, |
| parallel = safe |
| ); |
| |
| -- |
| -- aggregate functions percentileCont(internal, agtype) and |
| -- percentileDisc(internal, agtype) |
| -- |
| -- percentile transfer function |
| CREATE FUNCTION ag_catalog.age_percentile_aggtransfn(internal, agtype, agtype) |
| RETURNS internal |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- percentile_cont final function |
| CREATE FUNCTION ag_catalog.age_percentile_cont_aggfinalfn(internal) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- percentile_disc final function |
| CREATE FUNCTION ag_catalog.age_percentile_disc_aggfinalfn(internal) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- aggregate definition for _percentilecont(agtype, agytpe) |
| CREATE AGGREGATE ag_catalog.age_percentilecont(agtype, agtype) |
| ( |
| stype = internal, |
| sfunc = ag_catalog.age_percentile_aggtransfn, |
| finalfunc = ag_catalog.age_percentile_cont_aggfinalfn, |
| parallel = safe |
| ); |
| |
| -- aggregate definition for percentiledisc(agtype, agytpe) |
| CREATE AGGREGATE ag_catalog.age_percentiledisc(agtype, agtype) |
| ( |
| stype = internal, |
| sfunc = ag_catalog.age_percentile_aggtransfn, |
| finalfunc = ag_catalog.age_percentile_disc_aggfinalfn, |
| parallel = safe |
| ); |
| |
| -- |
| -- aggregate functions for collect(variadic "any") |
| -- |
| -- collect transfer function |
| CREATE FUNCTION ag_catalog.age_collect_aggtransfn(internal, variadic "any") |
| RETURNS internal |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- collect final function |
| CREATE FUNCTION ag_catalog.age_collect_aggfinalfn(internal) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- aggregate definition for age_collect(variadic "any") |
| CREATE AGGREGATE ag_catalog.age_collect(variadic "any") |
| ( |
| stype = internal, |
| sfunc = ag_catalog.age_collect_aggtransfn, |
| finalfunc = ag_catalog.age_collect_aggfinalfn, |
| parallel = safe |
| ); |