summaryrefslogtreecommitdiff
path: root/mysql-test/main/consistent_snapshot.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/consistent_snapshot.test')
-rw-r--r--mysql-test/main/consistent_snapshot.test69
1 files changed, 69 insertions, 0 deletions
diff --git a/mysql-test/main/consistent_snapshot.test b/mysql-test/main/consistent_snapshot.test
new file mode 100644
index 00000000000..a481e757bed
--- /dev/null
+++ b/mysql-test/main/consistent_snapshot.test
@@ -0,0 +1,69 @@
+--source include/have_innodb.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+connect (con1,localhost,root,,);
+connect (con2,localhost,root,,);
+
+--echo ### Test 1:
+--echo ### - While a consistent snapshot transaction is executed,
+--echo ### no external inserts should be visible to the transaction.
+
+connection con1;
+CREATE TABLE t1 (a INT) ENGINE=innodb;
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+
+connection con2;
+INSERT INTO t1 VALUES(1);
+
+connection con1;
+SELECT * FROM t1; # if consistent snapshot was set as expected, we
+# should see nothing.
+COMMIT;
+
+--echo ### Test 2:
+--echo ### - For any non-consistent snapshot transaction, external
+--echo ### committed inserts should be visible to the transaction.
+
+DELETE FROM t1;
+START TRANSACTION; # Now we omit WITH CONSISTENT SNAPSHOT
+
+connection con2;
+INSERT INTO t1 VALUES(1);
+
+connection con1;
+SELECT * FROM t1; # if consistent snapshot was not set, as expected, we
+# should see 1.
+COMMIT;
+
+--echo ### Test 3:
+--echo ### - Bug#44664: valgrind warning for COMMIT_AND_CHAIN and ROLLBACK_AND_CHAIN
+--echo ### Chaining a transaction does not retain consistency level.
+
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+DELETE FROM t1;
+COMMIT WORK AND CHAIN;
+
+connection con2;
+INSERT INTO t1 VALUES(1);
+
+connection con1;
+SELECT * FROM t1; # if consistent snapshot was not set, as expected, we
+# should see 1.
+COMMIT;
+
+connection default;
+disconnect con1;
+disconnect con2;
+DROP TABLE t1;
+
+# End of 4.1 tests
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
+