1--source include/have_rocksdb.inc 2--source include/have_binlog_format_row.inc 3 4source include/master-slave.inc; 5 6connection master; 7 8eval SET SESSION TRANSACTION ISOLATION LEVEL $trx_isolation; 9set @save_rocksdb_blind_delete_primary_key=@@session.rocksdb_blind_delete_primary_key; 10set @save_rocksdb_master_skip_tx_api=@@session.rocksdb_master_skip_tx_api; 11 12--disable_warnings 13DROP TABLE IF EXISTS t1,t2; 14--enable_warnings 15create table t1 (id int primary key, value int, value2 varchar(200)) engine=rocksdb; 16create table t2 (id int primary key, value int, value2 varchar(200), index(value)) engine=rocksdb; 17 18--disable_query_log 19let $t = 1; 20while ($t <= 2) { 21 let $i = 1; 22 while ($i <= 10000) { 23 let $insert = INSERT INTO t$t VALUES($i, $i, REPEAT('x', 150)); 24 inc $i; 25 eval $insert; 26 } 27 inc $t; 28} 29--enable_query_log 30 31SET session rocksdb_blind_delete_primary_key=1; 32select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 33# Deleting 1000 rows from t1 34--disable_query_log 35let $i = 1; 36while ($i <= 1000) { 37 let $insert = DELETE FROM t1 WHERE id=$i; 38 inc $i; 39 eval $insert; 40} 41--enable_query_log 42select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 43SELECT count(*) FROM t1; 44 45--source include/sync_slave_sql_with_master.inc 46connection slave; 47eval SET SESSION TRANSACTION ISOLATION LEVEL $trx_isolation; 48SELECT count(*) FROM t1; 49connection master; 50 51# Deleting 1000 rows from t2 (blind delete disabled because of secondary key) 52select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 53--disable_query_log 54let $i = 1; 55while ($i <= 1000) { 56 let $insert = DELETE FROM t2 WHERE id=$i; 57 inc $i; 58 eval $insert; 59} 60--enable_query_log 61select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 62SELECT count(*) FROM t2; 63 64SET session rocksdb_master_skip_tx_api=1; 65 66select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 67--disable_query_log 68let $t = 1; 69while ($t <= 2) { 70 let $i = 1001; 71 while ($i <= 2000) { 72 let $insert = DELETE FROM t$t WHERE id=$i; 73 inc $i; 74 eval $insert; 75 } 76 inc $t; 77} 78--enable_query_log 79select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 80SELECT count(*) FROM t1; 81SELECT count(*) FROM t2; 82--source include/sync_slave_sql_with_master.inc 83connection slave; 84SELECT count(*) FROM t1; 85SELECT count(*) FROM t2; 86connection master; 87 88 89# Range Deletes (blind delete disabled) 90select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 91DELETE FROM t1 WHERE id BETWEEN 3001 AND 4000; 92DELETE FROM t2 WHERE id BETWEEN 3001 AND 4000; 93select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; 94SELECT count(*) FROM t1; 95SELECT count(*) FROM t2; 96--source include/sync_slave_sql_with_master.inc 97connection slave; 98SELECT count(*) FROM t1; 99SELECT count(*) FROM t2; 100connection master; 101 102 103# Deleting same keys (slaves stop) 104DELETE FROM t1 WHERE id = 10; 105SELECT count(*) FROM t1; 106connection slave; 107call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.*Error_code.*"); 108call mtr.add_suppression("Slave: Can't find record in 't1'.*"); 109# wait until we have the expected error 110--let $slave_sql_errno= convert_error(ER_KEY_NOT_FOUND) 111--source include/wait_for_slave_sql_error.inc 112 113connection slave; 114set @save_rocksdb_read_free_rpl=@@global.rocksdb_read_free_rpl; 115set global rocksdb_read_free_rpl=PK_SK; 116START SLAVE; 117connection master; 118--source include/sync_slave_sql_with_master.inc 119connection slave; 120SELECT count(*) FROM t1; 121connection master; 122 123 124# cleanup 125connection slave; 126set global rocksdb_read_free_rpl=@save_rocksdb_read_free_rpl; 127connection master; 128SET session rocksdb_blind_delete_primary_key=@save_rocksdb_blind_delete_primary_key; 129SET session rocksdb_master_skip_tx_api=@save_rocksdb_master_skip_tx_api; 130 131DROP TABLE t1, t2; 132--source include/rpl_end.inc 133