mirror of https://github.com/citusdata/citus.git
Fix a flaky test related with temp columnar table cleanup (#5599)
Wait until old backend to expire to make sure that temp table cleanup is complete.pull/5567/head
parent
e564220dd5
commit
d98500ac22
|
@ -76,7 +76,16 @@ CREATE TEMPORARY TABLE columnar_temp(i int) USING columnar;
|
|||
INSERT INTO columnar_temp SELECT i FROM generate_series(1,5) i;
|
||||
SELECT columnar_test_helpers.columnar_relation_storageid(oid) AS columnar_temp_storage_id
|
||||
FROM pg_class WHERE relname='columnar_temp' \gset
|
||||
SELECT pg_backend_pid() AS val INTO old_backend_pid;
|
||||
\c - - - :master_port
|
||||
-- wait until old backend to expire to make sure that temp table cleanup is complete
|
||||
SELECT columnar_test_helpers.pg_waitpid(val) FROM old_backend_pid;
|
||||
pg_waitpid
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
DROP TABLE old_backend_pid;
|
||||
-- show that temporary table itself and it's metadata is removed
|
||||
SELECT COUNT(*)=0 FROM pg_class WHERE relname='columnar_temp';
|
||||
?column?
|
||||
|
|
|
@ -118,3 +118,11 @@ BEGIN
|
|||
END LOOP;
|
||||
RETURN false;
|
||||
END; $$ language plpgsql;
|
||||
CREATE OR REPLACE FUNCTION pg_waitpid(p_pid integer)
|
||||
RETURNS VOID AS $$
|
||||
BEGIN
|
||||
WHILE EXISTS (SELECT * FROM pg_stat_activity WHERE pid=p_pid)
|
||||
LOOP
|
||||
PERFORM pg_sleep(0.001);
|
||||
END LOOP;
|
||||
END; $$ language plpgsql;
|
||||
|
|
|
@ -63,8 +63,15 @@ INSERT INTO columnar_temp SELECT i FROM generate_series(1,5) i;
|
|||
SELECT columnar_test_helpers.columnar_relation_storageid(oid) AS columnar_temp_storage_id
|
||||
FROM pg_class WHERE relname='columnar_temp' \gset
|
||||
|
||||
SELECT pg_backend_pid() AS val INTO old_backend_pid;
|
||||
|
||||
\c - - - :master_port
|
||||
|
||||
-- wait until old backend to expire to make sure that temp table cleanup is complete
|
||||
SELECT columnar_test_helpers.pg_waitpid(val) FROM old_backend_pid;
|
||||
|
||||
DROP TABLE old_backend_pid;
|
||||
|
||||
-- show that temporary table itself and it's metadata is removed
|
||||
SELECT COUNT(*)=0 FROM pg_class WHERE relname='columnar_temp';
|
||||
SELECT columnar_test_helpers.columnar_metadata_has_storage_id(:columnar_temp_storage_id);
|
||||
|
|
|
@ -128,3 +128,12 @@ BEGIN
|
|||
END LOOP;
|
||||
RETURN false;
|
||||
END; $$ language plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION pg_waitpid(p_pid integer)
|
||||
RETURNS VOID AS $$
|
||||
BEGIN
|
||||
WHILE EXISTS (SELECT * FROM pg_stat_activity WHERE pid=p_pid)
|
||||
LOOP
|
||||
PERFORM pg_sleep(0.001);
|
||||
END LOOP;
|
||||
END; $$ language plpgsql;
|
||||
|
|
Loading…
Reference in New Issue