diff --git a/src/test/regress/expected/columnar_create.out b/src/test/regress/expected/columnar_create.out index 704c0d932..9cb025336 100644 --- a/src/test/regress/expected/columnar_create.out +++ b/src/test/regress/expected/columnar_create.out @@ -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? diff --git a/src/test/regress/expected/columnar_test_helpers.out b/src/test/regress/expected/columnar_test_helpers.out index 8736919ea..f5142a431 100644 --- a/src/test/regress/expected/columnar_test_helpers.out +++ b/src/test/regress/expected/columnar_test_helpers.out @@ -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; diff --git a/src/test/regress/sql/columnar_create.sql b/src/test/regress/sql/columnar_create.sql index f83b1c2a8..a5861bb45 100644 --- a/src/test/regress/sql/columnar_create.sql +++ b/src/test/regress/sql/columnar_create.sql @@ -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); diff --git a/src/test/regress/sql/columnar_test_helpers.sql b/src/test/regress/sql/columnar_test_helpers.sql index 0340c06f9..f96dcdbf6 100644 --- a/src/test/regress/sql/columnar_test_helpers.sql +++ b/src/test/regress/sql/columnar_test_helpers.sql @@ -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;