sql/age_aggregate.sql (143 lines of code) (raw):

/* * 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 );