From 5923334114c6798c76d590dc384bada015178d4e Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Fri, 21 Jul 2017 16:22:51 +0200 Subject: [PATCH] Add transaction recovery regression tests --- .../isolation_distributed_transaction_id.out | 4 +- .../isolation_transaction_recovery.out | 22 +++++++++++ src/test/regress/isolation_schedule | 2 +- .../specs/isolation_transaction_recovery.spec | 37 +++++++++++++++++++ 4 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 src/test/regress/expected/isolation_transaction_recovery.out create mode 100644 src/test/regress/specs/isolation_transaction_recovery.spec diff --git a/src/test/regress/expected/isolation_distributed_transaction_id.out b/src/test/regress/expected/isolation_distributed_transaction_id.out index 25fc9cf88..823b9b049 100644 --- a/src/test/regress/expected/isolation_distributed_transaction_id.out +++ b/src/test/regress/expected/isolation_distributed_transaction_id.out @@ -98,7 +98,7 @@ step s1-get-current-transaction-id: row -(0,186) +(0,189) step s2-get-first-worker-active-transactions: SELECT * FROM run_command_on_workers('SELECT row(initiator_node_identifier, transaction_number) FROM @@ -109,4 +109,4 @@ step s2-get-first-worker-active-transactions: nodename nodeport success result -localhost 57637 t (0,186) +localhost 57637 t (0,189) diff --git a/src/test/regress/expected/isolation_transaction_recovery.out b/src/test/regress/expected/isolation_transaction_recovery.out new file mode 100644 index 000000000..b1d007401 --- /dev/null +++ b/src/test/regress/expected/isolation_transaction_recovery.out @@ -0,0 +1,22 @@ +Parsed test spec with 2 sessions + +starting permutation: s1-begin s1-recover s2-insert s1-commit +create_reference_table + + +step s1-begin: + BEGIN; + +step s1-recover: + SELECT recover_prepared_transactions(); + +recover_prepared_transactions + +0 +step s2-insert: + INSERT INTO test_transaction_recovery VALUES (1,2); + +step s1-commit: + COMMIT; + +step s2-insert: <... completed> diff --git a/src/test/regress/isolation_schedule b/src/test/regress/isolation_schedule index 24860fe48..8b963518e 100644 --- a/src/test/regress/isolation_schedule +++ b/src/test/regress/isolation_schedule @@ -8,5 +8,5 @@ test: isolation_cluster_management test: isolation_dml_vs_repair isolation_copy_placement_vs_copy_placement isolation_cancellation test: isolation_concurrent_dml isolation_data_migration test: isolation_drop_shards isolation_copy_placement_vs_modification -test: isolation_insert_vs_vacuum +test: isolation_insert_vs_vacuum isolation_transaction_recovery test: isolation_distributed_transaction_id diff --git a/src/test/regress/specs/isolation_transaction_recovery.spec b/src/test/regress/specs/isolation_transaction_recovery.spec new file mode 100644 index 000000000..3bdc0c9bd --- /dev/null +++ b/src/test/regress/specs/isolation_transaction_recovery.spec @@ -0,0 +1,37 @@ +setup +{ + CREATE TABLE test_transaction_recovery(column1 int, column2 int); + SELECT create_reference_table('test_transaction_recovery'); +} + +teardown +{ + DROP TABLE test_transaction_recovery; +} + +session "s1" + +step "s1-begin" +{ + BEGIN; +} + +step "s1-recover" +{ + SELECT recover_prepared_transactions(); +} + +step "s1-commit" +{ + COMMIT; +} + +session "s2" + +step "s2-insert" +{ + INSERT INTO test_transaction_recovery VALUES (1,2); +} + +# Recovery and 2PCs should block each other +permutation "s1-begin" "s1-recover" "s2-insert" "s1-commit"