mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-14 17:43:34 +08:00
This patch moves the support functions for histogram, first and last into the _timescaledb_functions schema. Since we alter the schema of the existing functions in upgrade scripts and do not change the aggregates this should work completely transparently for any user objects using those aggregates.
73 lines
3.3 KiB
SQL
73 lines
3.3 KiB
SQL
-- This file and its contents are licensed under the Apache License 2.0.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-APACHE for a copy of the license.
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.first_sfunc(internal, anyelement, "any")
|
|
RETURNS internal
|
|
AS '@MODULE_PATHNAME@', 'ts_first_sfunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.first_combinefunc(internal, internal)
|
|
RETURNS internal
|
|
AS '@MODULE_PATHNAME@', 'ts_first_combinefunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.last_sfunc(internal, anyelement, "any")
|
|
RETURNS internal
|
|
AS '@MODULE_PATHNAME@', 'ts_last_sfunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.last_combinefunc(internal, internal)
|
|
RETURNS internal
|
|
AS '@MODULE_PATHNAME@', 'ts_last_combinefunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.bookend_finalfunc(internal, anyelement, "any")
|
|
RETURNS anyelement
|
|
AS '@MODULE_PATHNAME@', 'ts_bookend_finalfunc'
|
|
LANGUAGE C IMMUTABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.bookend_serializefunc(internal)
|
|
RETURNS bytea
|
|
AS '@MODULE_PATHNAME@', 'ts_bookend_serializefunc'
|
|
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.bookend_deserializefunc(bytea, internal)
|
|
RETURNS internal
|
|
AS '@MODULE_PATHNAME@', 'ts_bookend_deserializefunc'
|
|
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
|
|
-- We started using CREATE OR REPLACE AGGREGATE for aggregate creation once the syntax was fully supported
|
|
-- as it is easier to support idempotent changes this way. This will allow for changes to functions supporting
|
|
-- the aggregate, and, for instance, the definition and inclusion of inverse functions for window function
|
|
-- support. However, it should still be noted that changes to the data structures used for the internal
|
|
-- state of the aggregate must be backwards compatible and the old format must be accepted by any new functions
|
|
-- in order for them to continue working with Continuous Aggregates, where old states may have been materialized.
|
|
|
|
--This aggregate returns the "first" value of the first argument when ordered by the second argument.
|
|
--Ex. first(temp, time) returns the temp value for the row with the lowest time
|
|
CREATE OR REPLACE AGGREGATE @extschema@.first(anyelement, "any") (
|
|
SFUNC = _timescaledb_functions.first_sfunc,
|
|
STYPE = internal,
|
|
COMBINEFUNC = _timescaledb_functions.first_combinefunc,
|
|
SERIALFUNC = _timescaledb_functions.bookend_serializefunc,
|
|
DESERIALFUNC = _timescaledb_functions.bookend_deserializefunc,
|
|
PARALLEL = SAFE,
|
|
FINALFUNC = _timescaledb_functions.bookend_finalfunc,
|
|
FINALFUNC_EXTRA
|
|
);
|
|
|
|
--This aggregate returns the "last" value of the first argument when ordered by the second argument.
|
|
--Ex. last(temp, time) returns the temp value for the row with highest time
|
|
CREATE OR REPLACE AGGREGATE @extschema@.last(anyelement, "any") (
|
|
SFUNC = _timescaledb_functions.last_sfunc,
|
|
STYPE = internal,
|
|
COMBINEFUNC = _timescaledb_functions.last_combinefunc,
|
|
SERIALFUNC = _timescaledb_functions.bookend_serializefunc,
|
|
DESERIALFUNC = _timescaledb_functions.bookend_deserializefunc,
|
|
PARALLEL = SAFE,
|
|
FINALFUNC = _timescaledb_functions.bookend_finalfunc,
|
|
FINALFUNC_EXTRA
|
|
);
|