mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 10:33:27 +08:00
There is no CREATE OR REPLACE AGGREGATE which means that the only way to replace an aggregate is to DROP then CREATE which is problematic as it will fail if the previous version of the aggregate has dependencies. This commit makes sure aggregates are not dropped and recreated every time. NOTE that WHEN CREATING NEW FUNCTIONS in sql/aggregates.sql you should also make sure they are created in an update script so that both new users and people updating from a previous version get the new function. sql/aggregates.sql is run only once when TimescaleDB is installed and is not rerun during updates that is why everything created there should also be in an update file. Fixes #612
25 lines
1.1 KiB
SQL
25 lines
1.1 KiB
SQL
CREATE OR REPLACE FUNCTION _timescaledb_internal.hist_sfunc (state INTERNAL, val DOUBLE PRECISION, MIN DOUBLE PRECISION, MAX DOUBLE PRECISION, nbuckets INTEGER)
|
|
RETURNS INTERNAL
|
|
AS '@MODULE_PATHNAME@', 'hist_sfunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.hist_combinefunc(state1 INTERNAL, state2 INTERNAL)
|
|
RETURNS INTERNAL
|
|
AS '@MODULE_PATHNAME@', 'hist_combinefunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.hist_serializefunc(INTERNAL)
|
|
RETURNS bytea
|
|
AS '@MODULE_PATHNAME@', 'hist_serializefunc'
|
|
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.hist_deserializefunc(bytea, INTERNAL)
|
|
RETURNS INTERNAL
|
|
AS '@MODULE_PATHNAME@', 'hist_deserializefunc'
|
|
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.hist_finalfunc(state INTERNAL, val DOUBLE PRECISION, MIN DOUBLE PRECISION, MAX DOUBLE PRECISION, nbuckets INTEGER)
|
|
RETURNS INTEGER[]
|
|
AS '@MODULE_PATHNAME@', 'hist_finalfunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|