mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-14 09:37:00 +08:00
Need to use quote_ident() on the user roles. Otherwise the extension scripts will fail. Co-authored-by: Mats Kindahl <mats@timescale.com>
76 lines
2.1 KiB
PL/PgSQL
76 lines
2.1 KiB
PL/PgSQL
-- 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.
|
|
|
|
-- A retention policy is set up for the table _timescaledb_internal.job_errors (Error Log Retention Policy [2])
|
|
-- By default, it will run once a month and and drop rows older than a month.
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.policy_job_error_retention(job_id integer, config JSONB) RETURNS integer
|
|
LANGUAGE PLPGSQL AS
|
|
$BODY$
|
|
DECLARE
|
|
drop_after INTERVAL;
|
|
numrows INTEGER;
|
|
BEGIN
|
|
SELECT config->>'drop_after' INTO STRICT drop_after;
|
|
WITH deleted AS
|
|
(DELETE
|
|
FROM _timescaledb_internal.job_errors
|
|
WHERE finish_time < (now() - drop_after) RETURNING *)
|
|
SELECT count(*)
|
|
FROM deleted INTO numrows;
|
|
RETURN numrows;
|
|
END;
|
|
$BODY$ SET search_path TO pg_catalog, pg_temp;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_internal.policy_job_error_retention_check(config JSONB) RETURNS VOID
|
|
LANGUAGE PLPGSQL AS
|
|
$BODY$
|
|
DECLARE
|
|
drop_after interval;
|
|
BEGIN
|
|
IF config IS NULL THEN
|
|
RAISE EXCEPTION 'config cannot be NULL, and must contain drop_after';
|
|
END IF;
|
|
SELECT config->>'drop_after' INTO STRICT drop_after;
|
|
IF drop_after IS NULL THEN
|
|
RAISE EXCEPTION 'drop_after interval not provided';
|
|
END IF ;
|
|
END;
|
|
$BODY$ SET search_path TO pg_catalog, pg_temp;
|
|
|
|
INSERT INTO _timescaledb_config.bgw_job (
|
|
id,
|
|
application_name,
|
|
schedule_interval,
|
|
max_runtime,
|
|
max_retries,
|
|
retry_period,
|
|
proc_schema,
|
|
proc_name,
|
|
owner,
|
|
scheduled,
|
|
config,
|
|
check_schema,
|
|
check_name,
|
|
fixed_schedule,
|
|
initial_start
|
|
)
|
|
VALUES
|
|
(
|
|
2,
|
|
'Error Log Retention Policy [2]',
|
|
INTERVAL '1 month',
|
|
INTERVAL '1 hour',
|
|
-1,
|
|
INTERVAL '1h',
|
|
'_timescaledb_internal',
|
|
'policy_job_error_retention',
|
|
pg_catalog.quote_ident(current_role)::regrole,
|
|
true,
|
|
'{"drop_after":"1 month"}',
|
|
'_timescaledb_internal',
|
|
'policy_job_error_retention_check',
|
|
true,
|
|
'2000-01-01 00:00:00+00'::timestamptz
|
|
) ON CONFLICT (id) DO NOTHING;
|