From 7b4d9129049e19dac9d7185d3ffc76aad39e7b05 Mon Sep 17 00:00:00 2001 From: Onder Kalaci Date: Fri, 26 Oct 2018 16:25:11 +0300 Subject: [PATCH] Add cancellation tests for VACUUM/ANALYZE --- src/test/regress/expected/failure_vacuum.out | 33 +++++++++++++++++ .../regress/expected/failure_vacuum_0.out | 35 +++++++++++++++++++ src/test/regress/sql/failure_vacuum.sql | 15 ++++++++ 3 files changed, 83 insertions(+) diff --git a/src/test/regress/expected/failure_vacuum.out b/src/test/regress/expected/failure_vacuum.out index 0b8b11a98..d9a7ff19c 100644 --- a/src/test/regress/expected/failure_vacuum.out +++ b/src/test/regress/expected/failure_vacuum.out @@ -67,6 +67,31 @@ UPDATE pg_dist_shard_placement SET shardstate = 1 WHERE shardid IN ( SELECT shardid FROM pg_dist_shard WHERE logicalrelid = 'vacuum_test'::regclass ); +-- the same tests with cancel +SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + +VACUUM vacuum_test; +ERROR: canceling statement due to user request +SELECT citus.mitmproxy('conn.onQuery(query="^ANALYZE").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + +ANALYZE vacuum_test; +ERROR: canceling statement due to user request +-- cancel during COMMIT should be ignored +SELECT citus.mitmproxy('conn.onQuery(query="^COMMIT").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + +ANALYZE vacuum_test; SELECT citus.mitmproxy('conn.allow()'); mitmproxy ----------- @@ -91,6 +116,14 @@ ERROR: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. CONTEXT: while executing command on localhost:9060 +SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM.*other").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + +VACUUM vacuum_test, other_vacuum_test; +ERROR: canceling statement due to user request -- ==== Clean up, we're done here ==== SELECT citus.mitmproxy('conn.allow()'); mitmproxy diff --git a/src/test/regress/expected/failure_vacuum_0.out b/src/test/regress/expected/failure_vacuum_0.out index 403299fd2..b4bfe5221 100644 --- a/src/test/regress/expected/failure_vacuum_0.out +++ b/src/test/regress/expected/failure_vacuum_0.out @@ -67,6 +67,31 @@ UPDATE pg_dist_shard_placement SET shardstate = 1 WHERE shardid IN ( SELECT shardid FROM pg_dist_shard WHERE logicalrelid = 'vacuum_test'::regclass ); +-- the same tests with cancel +SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + +VACUUM vacuum_test; +ERROR: canceling statement due to user request +SELECT citus.mitmproxy('conn.onQuery(query="^ANALYZE").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + +ANALYZE vacuum_test; +ERROR: canceling statement due to user request +-- cancel during COMMIT should be ignored +SELECT citus.mitmproxy('conn.onQuery(query="^COMMIT").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + +ANALYZE vacuum_test; SELECT citus.mitmproxy('conn.allow()'); mitmproxy ----------- @@ -86,6 +111,16 @@ SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM.*other").kill()'); (1 row) +VACUUM vacuum_test, other_vacuum_test; +ERROR: syntax error at or near "," +LINE 1: VACUUM vacuum_test, other_vacuum_test; + ^ +SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM.*other").cancel(' || pg_backend_pid() || ')'); + mitmproxy +----------- + +(1 row) + VACUUM vacuum_test, other_vacuum_test; ERROR: syntax error at or near "," LINE 1: VACUUM vacuum_test, other_vacuum_test; diff --git a/src/test/regress/sql/failure_vacuum.sql b/src/test/regress/sql/failure_vacuum.sql index 4773be3d8..79fb83dda 100644 --- a/src/test/regress/sql/failure_vacuum.sql +++ b/src/test/regress/sql/failure_vacuum.sql @@ -28,6 +28,17 @@ WHERE shardid IN ( SELECT shardid FROM pg_dist_shard WHERE logicalrelid = 'vacuum_test'::regclass ); +-- the same tests with cancel +SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM").cancel(' || pg_backend_pid() || ')'); +VACUUM vacuum_test; + +SELECT citus.mitmproxy('conn.onQuery(query="^ANALYZE").cancel(' || pg_backend_pid() || ')'); +ANALYZE vacuum_test; + +-- cancel during COMMIT should be ignored +SELECT citus.mitmproxy('conn.onQuery(query="^COMMIT").cancel(' || pg_backend_pid() || ')'); +ANALYZE vacuum_test; + SELECT citus.mitmproxy('conn.allow()'); CREATE TABLE other_vacuum_test (key int, value int); @@ -37,6 +48,10 @@ SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM.*other").kill()'); VACUUM vacuum_test, other_vacuum_test; +SELECT citus.mitmproxy('conn.onQuery(query="^VACUUM.*other").cancel(' || pg_backend_pid() || ')'); + +VACUUM vacuum_test, other_vacuum_test; + -- ==== Clean up, we're done here ==== SELECT citus.mitmproxy('conn.allow()');