mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 18:43:18 +08:00
The sql tests still had version checks and would run EXPLAIN with different parameters depending on postgres version. Since all supported postgres versions now support all the parameters we use we can safely remove the version check.
65 lines
2.3 KiB
PL/PgSQL
65 lines
2.3 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.
|
|
|
|
-- Note on testing: need a couple wrappers that pg_sleep in a loop to wait for changes
|
|
-- to appear in pg_stat_activity.
|
|
-- Further Note: PG 9.6 changed what appeared in pg_stat_activity, so the launcher doesn't actually show up.
|
|
-- we can still test its interactions with its children, but can't test some of the things specific to the launcher.
|
|
-- So we've added some bits about the version number as needed.
|
|
|
|
CREATE VIEW worker_counts as SELECT count(*) filter (WHERE application_name = 'TimescaleDB Background Worker Launcher') as launcher,
|
|
count(*) filter (WHERE application_name = 'TimescaleDB Background Worker Scheduler' AND datname = :'TEST_DBNAME') as single_scheduler,
|
|
count(*) filter (WHERE application_name = 'TimescaleDB Background Worker Scheduler' AND datname = :'TEST_DBNAME_2') as single_2_scheduler,
|
|
count(*) filter (WHERE application_name = 'TimescaleDB Background Worker Scheduler' AND datname = 'template1') as template1_scheduler
|
|
FROM pg_stat_activity;
|
|
|
|
CREATE FUNCTION wait_worker_counts(launcher_ct INTEGER, scheduler1_ct INTEGER, scheduler2_ct INTEGER, template1_ct INTEGER) RETURNS BOOLEAN LANGUAGE PLPGSQL AS
|
|
$BODY$
|
|
DECLARE
|
|
r INTEGER;
|
|
BEGIN
|
|
FOR i in 1..10
|
|
LOOP
|
|
SELECT COUNT(*) from worker_counts where launcher = launcher_ct
|
|
AND single_scheduler = scheduler1_ct AND single_2_scheduler = scheduler2_ct and template1_scheduler = template1_ct into r;
|
|
if(r < 1) THEN
|
|
PERFORM pg_sleep(0.1);
|
|
PERFORM pg_stat_clear_snapshot();
|
|
ELSE
|
|
--We have the correct counts!
|
|
RETURN TRUE;
|
|
END IF;
|
|
END LOOP;
|
|
RETURN FALSE;
|
|
END
|
|
$BODY$;
|
|
|
|
CREATE FUNCTION wait_for_bgw_scheduler(_datname NAME, _count INT DEFAULT 1, _ticks INT DEFAULT 10) RETURNS TEXT LANGUAGE PLPGSQL AS
|
|
$BODY$
|
|
DECLARE
|
|
r INTEGER;
|
|
BEGIN
|
|
FOR i in 1.._ticks
|
|
LOOP
|
|
SELECT count(*)
|
|
FROM pg_stat_activity
|
|
WHERE
|
|
application_name = 'TimescaleDB Background Worker Scheduler' AND
|
|
datname = _datname
|
|
INTO r;
|
|
|
|
IF(r <> _count) THEN
|
|
PERFORM pg_sleep(0.1);
|
|
PERFORM pg_stat_clear_snapshot();
|
|
ELSE
|
|
RETURN 'BGW Scheduler found.';
|
|
END IF;
|
|
|
|
END LOOP;
|
|
|
|
RETURN 'BGW Scheduler NOT found.';
|
|
|
|
END
|
|
$BODY$;
|