aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2024-03-30 14:16:54 +0100
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2024-03-30 14:16:54 +0100
commitecf741cfae0603d1df269d8b799455bbcaef86e7 (patch)
tree0bf0d313a8fccb27b353398a2b27ddc2ad10a322
parent056c565742742e2eafe681c0a3ee7710503a556b (diff)
downloadpostgresql-ecf741cfae0603d1df269d8b799455bbcaef86e7.tar.gz
postgresql-ecf741cfae0603d1df269d8b799455bbcaef86e7.zip
Stabilize postgres_fdw test
The test fails when RESET statement_timeout takes longer than 10ms. Avoid the problem by using SET LOCAL instead. Overall, this test is not ideal: 10ms could be shorter than the time to have sent the query to the "remote" server, so it's possible that on some machines this test doesn't actually witness a remote query being cancelled. We may want to improve on this someday by using some other testing technique, but for now it's better than nothing. I verified manually that one round of remote cancellation occurs when this runs on my machine. Discussion: https://postgr.es/m/CAGECzQRsdWnj=YaaPCnA8d7E1AdbxRPBYmyBQRMPUijR2MpM_w@mail.gmail.com
-rw-r--r--contrib/postgres_fdw/expected/postgres_fdw.out5
-rw-r--r--contrib/postgres_fdw/sql/postgres_fdw.sql5
2 files changed, 6 insertions, 4 deletions
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index b7af86d3511..078b8a966f8 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -2750,10 +2750,11 @@ EXPLAIN (VERBOSE, COSTS OFF) SELECT count(*) FROM ft1 CROSS JOIN ft2 CROSS JOIN
(4 rows)
-- Make sure query cancellation works
-SET statement_timeout = '10ms';
+BEGIN;
+SET LOCAL statement_timeout = '10ms';
select count(*) from ft1 CROSS JOIN ft2 CROSS JOIN ft4 CROSS JOIN ft5; -- this takes very long
ERROR: canceling statement due to statement timeout
-RESET statement_timeout;
+COMMIT;
-- ====================================================================
-- Check that userid to use when querying the remote table is correctly
-- propagated into foreign rels present in subqueries under an UNION ALL
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 6e1c819159c..09ba234e43d 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -740,9 +740,10 @@ ALTER VIEW v4 OWNER TO regress_view_owner;
-- Make sure this big CROSS JOIN query is pushed down
EXPLAIN (VERBOSE, COSTS OFF) SELECT count(*) FROM ft1 CROSS JOIN ft2 CROSS JOIN ft4 CROSS JOIN ft5;
-- Make sure query cancellation works
-SET statement_timeout = '10ms';
+BEGIN;
+SET LOCAL statement_timeout = '10ms';
select count(*) from ft1 CROSS JOIN ft2 CROSS JOIN ft4 CROSS JOIN ft5; -- this takes very long
-RESET statement_timeout;
+COMMIT;
-- ====================================================================
-- Check that userid to use when querying the remote table is correctly