1--source include/have_log_bin.inc 2--source include/have_rocksdb.inc 3--source include/count_sessions.inc 4--disable_warnings 5--source include/have_gtid.inc 6--enable_warnings 7-- let $uuid = `select @@server_uuid;` 8 9connect (con1,localhost,root,,); 10connect (con2,localhost,root,,); 11 12connection con1; 13CREATE TABLE t1 (id INT, value int, PRIMARY KEY (id), INDEX (value)) ENGINE=ROCKSDB; 14INSERT INTO t1 VALUES (1,1); 15 16# Read-only, long-running transaction. SingleDelete/Put shouldn't increase much. 17select variable_value into @p from performance_schema.global_status where variable_name='rocksdb_number_sst_entry_put'; 18select variable_value into @s from performance_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete'; 19START TRANSACTION WITH CONSISTENT SNAPSHOT; 20SHOW STATUS LIKE 'binlog_snapshot_file'; 21SHOW STATUS LIKE 'binlog_snapshot_position'; 22 23connection con2; 24--disable_query_log 25let $i = 1; 26while ($i <= 10000) { 27 let $update = UPDATE t1 SET value=value+1 WHERE id=1; 28 inc $i; 29 eval $update; 30} 31--enable_query_log 32 33connection con1; 34select case when variable_value-@p < 1000 then 'true' else variable_value-@p end from performance_schema.global_status where variable_name='rocksdb_number_sst_entry_put'; 35select case when variable_value-@s < 100 then 'true' else variable_value-@s end from performance_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete'; 36SELECT * FROM t1; 37--error ER_UPDATES_WITH_CONSISTENT_SNAPSHOT 38INSERT INTO t1 values (2, 2); 39ROLLBACK; 40SELECT * FROM t1; 41INSERT INTO t1 values (2, 2); 42SELECT * FROM t1 ORDER BY id; 43 44# Regular long-running transaction. 45# No "Transaction could not check for conflicts for opearation" error should happen. 46BEGIN; 47 48connection con2; 49--disable_query_log 50let $i = 5; 51while ($i <= 10000) { 52 let $insert = INSERT INTO t1 VALUES ($i, $i); 53 inc $i; 54 eval $insert; 55} 56--enable_query_log 57 58connection con1; 59SELECT COUNT(*) FROM t1; 60COMMIT; 61 62connection default; 63disconnect con1; 64disconnect con2; 65OPTIMIZE TABLE t1; 66DROP TABLE t1; 67reset master; 68