mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 01:53:41 +08:00
The retention and compression policies can now use drop_created_before and compress_created_before arguments respectively to specify chunk selection using their creation times. We don't support creation times for CAggs, yet.
136 lines
4.7 KiB
SQL
136 lines
4.7 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.
|
|
|
|
-- Add a retention policy to a hypertable or continuous aggregate.
|
|
-- The retention_window (typically an INTERVAL) determines the
|
|
-- window beyond which data is dropped at the time
|
|
-- of execution of the policy (e.g., '1 week'). Note that the retention
|
|
-- window will always align with chunk boundaries, thus the window
|
|
-- might be larger than the given one, but never smaller. In other
|
|
-- words, some data beyond the retention window
|
|
-- might be kept, but data within the window will never be deleted.
|
|
CREATE OR REPLACE FUNCTION @extschema@.add_retention_policy(
|
|
relation REGCLASS,
|
|
drop_after "any" = NULL,
|
|
if_not_exists BOOL = false,
|
|
schedule_interval INTERVAL = NULL,
|
|
initial_start TIMESTAMPTZ = NULL,
|
|
timezone TEXT = NULL,
|
|
drop_created_before INTERVAL = NULL
|
|
)
|
|
RETURNS INTEGER AS '@MODULE_PATHNAME@', 'ts_policy_retention_add'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
CREATE OR REPLACE FUNCTION @extschema@.remove_retention_policy(
|
|
relation REGCLASS,
|
|
if_exists BOOL = false
|
|
) RETURNS VOID
|
|
AS '@MODULE_PATHNAME@', 'ts_policy_retention_remove'
|
|
LANGUAGE C VOLATILE STRICT;
|
|
|
|
/* reorder policy */
|
|
CREATE OR REPLACE FUNCTION @extschema@.add_reorder_policy(
|
|
hypertable REGCLASS,
|
|
index_name NAME,
|
|
if_not_exists BOOL = false,
|
|
initial_start timestamptz = NULL,
|
|
timezone TEXT = NULL
|
|
) RETURNS INTEGER
|
|
AS '@MODULE_PATHNAME@', 'ts_policy_reorder_add'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
CREATE OR REPLACE FUNCTION @extschema@.remove_reorder_policy(hypertable REGCLASS, if_exists BOOL = false) RETURNS VOID
|
|
AS '@MODULE_PATHNAME@', 'ts_policy_reorder_remove'
|
|
LANGUAGE C VOLATILE STRICT;
|
|
|
|
/* compression policy */
|
|
CREATE OR REPLACE FUNCTION @extschema@.add_compression_policy(
|
|
hypertable REGCLASS,
|
|
compress_after "any" = NULL,
|
|
if_not_exists BOOL = false,
|
|
schedule_interval INTERVAL = NULL,
|
|
initial_start TIMESTAMPTZ = NULL,
|
|
timezone TEXT = NULL,
|
|
compress_created_before INTERVAL = NULL
|
|
)
|
|
RETURNS INTEGER
|
|
AS '@MODULE_PATHNAME@', 'ts_policy_compression_add'
|
|
LANGUAGE C VOLATILE; -- not strict because we need to set different default values for schedule_interval
|
|
|
|
CREATE OR REPLACE FUNCTION @extschema@.remove_compression_policy(hypertable REGCLASS, if_exists BOOL = false) RETURNS BOOL
|
|
AS '@MODULE_PATHNAME@', 'ts_policy_compression_remove'
|
|
LANGUAGE C VOLATILE STRICT;
|
|
|
|
/* continuous aggregates policy */
|
|
CREATE OR REPLACE FUNCTION @extschema@.add_continuous_aggregate_policy(
|
|
continuous_aggregate REGCLASS, start_offset "any",
|
|
end_offset "any", schedule_interval INTERVAL,
|
|
if_not_exists BOOL = false,
|
|
initial_start TIMESTAMPTZ = NULL,
|
|
timezone TEXT = NULL
|
|
)
|
|
RETURNS INTEGER
|
|
AS '@MODULE_PATHNAME@', 'ts_policy_refresh_cagg_add'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
CREATE OR REPLACE FUNCTION @extschema@.remove_continuous_aggregate_policy(
|
|
continuous_aggregate REGCLASS,
|
|
if_not_exists BOOL = false, -- deprecating this argument, if_exists overrides it
|
|
if_exists BOOL = NULL) -- when NULL get the value from if_not_exists
|
|
|
|
RETURNS VOID
|
|
AS '@MODULE_PATHNAME@', 'ts_policy_refresh_cagg_remove'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
/* 1 step policies */
|
|
|
|
/* Add policies */
|
|
/* Unsupported drop_created_before/compress_created_before in add/alter for caggs */
|
|
CREATE OR REPLACE FUNCTION timescaledb_experimental.add_policies(
|
|
relation REGCLASS,
|
|
if_not_exists BOOL = false,
|
|
refresh_start_offset "any" = NULL,
|
|
refresh_end_offset "any" = NULL,
|
|
compress_after "any" = NULL,
|
|
drop_after "any" = NULL)
|
|
RETURNS BOOL
|
|
AS '@MODULE_PATHNAME@', 'ts_policies_add'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
/* Remove policies */
|
|
CREATE OR REPLACE FUNCTION timescaledb_experimental.remove_policies(
|
|
relation REGCLASS,
|
|
if_exists BOOL = false,
|
|
VARIADIC policy_names TEXT[] = NULL)
|
|
RETURNS BOOL
|
|
AS '@MODULE_PATHNAME@', 'ts_policies_remove'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
/* Remove all policies */
|
|
CREATE OR REPLACE FUNCTION timescaledb_experimental.remove_all_policies(
|
|
relation REGCLASS,
|
|
if_exists BOOL = false)
|
|
RETURNS BOOL
|
|
AS '@MODULE_PATHNAME@', 'ts_policies_remove_all'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
/* Alter policies */
|
|
CREATE OR REPLACE FUNCTION timescaledb_experimental.alter_policies(
|
|
relation REGCLASS,
|
|
if_exists BOOL = false,
|
|
refresh_start_offset "any" = NULL,
|
|
refresh_end_offset "any" = NULL,
|
|
compress_after "any" = NULL,
|
|
drop_after "any" = NULL)
|
|
RETURNS BOOL
|
|
AS '@MODULE_PATHNAME@', 'ts_policies_alter'
|
|
LANGUAGE C VOLATILE;
|
|
|
|
/* Show policies info */
|
|
CREATE OR REPLACE FUNCTION timescaledb_experimental.show_policies(
|
|
relation REGCLASS)
|
|
RETURNS SETOF JSONB
|
|
AS '@MODULE_PATHNAME@', 'ts_policies_show'
|
|
LANGUAGE C VOLATILE;
|