aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2017-03-13 16:46:32 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2017-03-13 16:46:51 -0400
commitd999b896d801130da461d55560188e7c4d36819a (patch)
treebaa0a53cffb568f1e20db9357c00bdd13b622597
parenta8b3262ab9790bea1eec8119fb7b00087f0a5a6b (diff)
downloadpostgresql-d999b896d801130da461d55560188e7c4d36819a.tar.gz
postgresql-d999b896d801130da461d55560188e7c4d36819a.zip
Remove unnecessary dependency on statement_timeout in prepared_xacts test.
Rather than waiting around for statement_timeout to expire, we can just try to take the table's lock in nowait mode. This saves some fraction under 4 seconds when running this test with prepared xacts available, and it guards against timeout-expired-anyway failures on very slow machines when prepared xacts are not available, as seen in a recent failure on axolotl for instance. This approach could fail if autovacuum were to take an exclusive lock on the test table concurrently, but there's no reason for it to do so. Since the main point here is to improve stability in the buildfarm, back-patch to all supported branches.
-rw-r--r--src/test/regress/expected/prepared_xacts.out10
-rw-r--r--src/test/regress/expected/prepared_xacts_1.out14
-rw-r--r--src/test/regress/sql/prepared_xacts.sql6
3 files changed, 8 insertions, 22 deletions
diff --git a/src/test/regress/expected/prepared_xacts.out b/src/test/regress/expected/prepared_xacts.out
index ef7034b5884..01cf87e9d7c 100644
--- a/src/test/regress/expected/prepared_xacts.out
+++ b/src/test/regress/expected/prepared_xacts.out
@@ -195,9 +195,8 @@ SELECT gid FROM pg_prepared_xacts;
-- pxtest3 should be locked because of the pending DROP
begin;
-set statement_timeout to 2000;
-SELECT * FROM pxtest3;
-ERROR: canceling statement due to statement timeout
+lock table pxtest3 in access share mode nowait;
+ERROR: could not obtain lock on relation "pxtest3"
rollback;
-- Disconnect, we will continue testing in a different backend
\c -
@@ -211,9 +210,8 @@ SELECT gid FROM pg_prepared_xacts;
-- pxtest3 should still be locked because of the pending DROP
begin;
-set statement_timeout to 2000;
-SELECT * FROM pxtest3;
-ERROR: canceling statement due to statement timeout
+lock table pxtest3 in access share mode nowait;
+ERROR: could not obtain lock on relation "pxtest3"
rollback;
-- Commit table creation
COMMIT PREPARED 'regress-one';
diff --git a/src/test/regress/expected/prepared_xacts_1.out b/src/test/regress/expected/prepared_xacts_1.out
index 5078bf6ba98..0857d259e07 100644
--- a/src/test/regress/expected/prepared_xacts_1.out
+++ b/src/test/regress/expected/prepared_xacts_1.out
@@ -199,12 +199,7 @@ SELECT gid FROM pg_prepared_xacts;
-- pxtest3 should be locked because of the pending DROP
begin;
-set statement_timeout to 2000;
-SELECT * FROM pxtest3;
- fff
------
-(0 rows)
-
+lock table pxtest3 in access share mode nowait;
rollback;
-- Disconnect, we will continue testing in a different backend
\c -
@@ -216,12 +211,7 @@ SELECT gid FROM pg_prepared_xacts;
-- pxtest3 should still be locked because of the pending DROP
begin;
-set statement_timeout to 2000;
-SELECT * FROM pxtest3;
- fff
------
-(0 rows)
-
+lock table pxtest3 in access share mode nowait;
rollback;
-- Commit table creation
COMMIT PREPARED 'regress-one';
diff --git a/src/test/regress/sql/prepared_xacts.sql b/src/test/regress/sql/prepared_xacts.sql
index dfb20a18e7c..d8249a27dc2 100644
--- a/src/test/regress/sql/prepared_xacts.sql
+++ b/src/test/regress/sql/prepared_xacts.sql
@@ -123,8 +123,7 @@ SELECT gid FROM pg_prepared_xacts;
-- pxtest3 should be locked because of the pending DROP
begin;
-set statement_timeout to 2000;
-SELECT * FROM pxtest3;
+lock table pxtest3 in access share mode nowait;
rollback;
-- Disconnect, we will continue testing in a different backend
@@ -135,8 +134,7 @@ SELECT gid FROM pg_prepared_xacts;
-- pxtest3 should still be locked because of the pending DROP
begin;
-set statement_timeout to 2000;
-SELECT * FROM pxtest3;
+lock table pxtest3 in access share mode nowait;
rollback;
-- Commit table creation