mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-17 02:53:51 +08:00
Setting the `timescaledb.restoring` guc explicitly to 'off' for the db meant that the setting got exported in `pg_dumpall` and some other cases where that setting would then conflict with the setting set by the pre_restore function causing it to be overridden and causing errors on restore. This changes to `RESET` so that instead it will take the system default and not be dumped separately as an override.
42 lines
1.4 KiB
PL/PgSQL
42 lines
1.4 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.
|
|
|
|
CREATE OR REPLACE FUNCTION timescaledb_pre_restore() RETURNS BOOL AS
|
|
$BODY$
|
|
DECLARE
|
|
db text;
|
|
BEGIN
|
|
SELECT current_database() INTO db;
|
|
EXECUTE format($$ALTER DATABASE %I SET timescaledb.restoring ='on'$$, db);
|
|
SET SESSION timescaledb.restoring = 'on';
|
|
PERFORM _timescaledb_internal.stop_background_workers();
|
|
--exported uuid may be included in the dump so backup the version
|
|
UPDATE _timescaledb_catalog.metadata SET key='exported_uuid_bak' WHERE key='exported_uuid';
|
|
RETURN true;
|
|
END
|
|
$BODY$
|
|
LANGUAGE PLPGSQL;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION timescaledb_post_restore() RETURNS BOOL AS
|
|
$BODY$
|
|
DECLARE
|
|
db text;
|
|
BEGIN
|
|
SELECT current_database() INTO db;
|
|
EXECUTE format($$ALTER DATABASE %I RESET timescaledb.restoring $$, db);
|
|
RESET timescaledb.restoring;
|
|
PERFORM _timescaledb_internal.restart_background_workers();
|
|
|
|
--try to restore the backed up uuid, if the restore did not set one
|
|
INSERT INTO _timescaledb_catalog.metadata
|
|
SELECT 'exported_uuid', value, include_in_telemetry FROM _timescaledb_catalog.metadata WHERE key='exported_uuid_bak'
|
|
ON CONFLICT DO NOTHING;
|
|
DELETE FROM _timescaledb_catalog.metadata WHERE key='exported_uuid_bak';
|
|
|
|
RETURN true;
|
|
END
|
|
$BODY$
|
|
LANGUAGE PLPGSQL;
|