mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 18:43:18 +08:00
When doing a gapfill query with multiple columns that may contain NULLs it is not trivial to remove NULL values from individual columns with a WHERE clause, this new locf option allows those NULL values to be ignored in gapfill queries with locf. We drop the old locf function because we dont want 2 locf functions. Unfortunately this means any views using locf have to be dropped.
43 lines
2.6 KiB
SQL
43 lines
2.6 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 time_bucket_gapfill(bucket_width SMALLINT, ts SMALLINT, start SMALLINT=NULL, finish SMALLINT=NULL) RETURNS SMALLINT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_int16_bucket' LANGUAGE C VOLATILE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION time_bucket_gapfill(bucket_width INT, ts INT, start INT=NULL, finish INT=NULL) RETURNS INT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_int32_bucket' LANGUAGE C VOLATILE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION time_bucket_gapfill(bucket_width BIGINT, ts BIGINT, start BIGINT=NULL, finish BIGINT=NULL) RETURNS BIGINT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_int64_bucket' LANGUAGE C VOLATILE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION time_bucket_gapfill(bucket_width INTERVAL, ts DATE, start DATE=NULL, finish DATE=NULL) RETURNS DATE
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_date_bucket' LANGUAGE C VOLATILE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION time_bucket_gapfill(bucket_width INTERVAL, ts TIMESTAMP, start TIMESTAMP=NULL, finish TIMESTAMP=NULL) RETURNS TIMESTAMP
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_timestamp_bucket' LANGUAGE C VOLATILE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION time_bucket_gapfill(bucket_width INTERVAL, ts TIMESTAMPTZ, start TIMESTAMPTZ=NULL, finish TIMESTAMPTZ=NULL) RETURNS TIMESTAMPTZ
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_timestamptz_bucket' LANGUAGE C VOLATILE PARALLEL SAFE;
|
|
|
|
-- locf function
|
|
CREATE OR REPLACE FUNCTION locf(value ANYELEMENT, prev ANYELEMENT=NULL, treat_null_as_missing BOOL=false) RETURNS ANYELEMENT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_marker' LANGUAGE C STABLE PARALLEL SAFE;
|
|
|
|
-- interpolate functions
|
|
CREATE OR REPLACE FUNCTION interpolate(value SMALLINT,prev RECORD=NULL,next RECORD=NULL) RETURNS SMALLINT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_marker' LANGUAGE C STABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION interpolate(value INT,prev RECORD=NULL,next RECORD=NULL) RETURNS INT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_marker' LANGUAGE C STABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION interpolate(value BIGINT,prev RECORD=NULL,next RECORD=NULL) RETURNS BIGINT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_marker' LANGUAGE C STABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION interpolate(value REAL,prev RECORD=NULL,next RECORD=NULL) RETURNS REAL
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_marker' LANGUAGE C STABLE PARALLEL SAFE;
|
|
|
|
CREATE OR REPLACE FUNCTION interpolate(value FLOAT,prev RECORD=NULL,next RECORD=NULL) RETURNS FLOAT
|
|
AS '@MODULE_PATHNAME@', 'ts_gapfill_marker' LANGUAGE C STABLE PARALLEL SAFE;
|
|
|