diff options
Diffstat (limited to 'storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc')
-rw-r--r-- | storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc b/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc new file mode 100644 index 00000000000..ffbdc306455 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb/include/ddl_high_priority_module.inc @@ -0,0 +1,141 @@ +############################################################################### +# This file plays as a function/module for ddl_high_priority test +# +# Usage: set the following variables before including +# +# $use_sys_var: whether using sys_var or syntax to trigger high_priority +# value: 0/1 +# +# $con_block: a blocking connection +# value: con1/con2/default +# +# $con_kill: a connection that will attempt to kill $con_blocking +# value: con1/con2/default +# +# $cmd: a regular command to evaluate (to use with sys var) +# value: sql command +# +# $high_priority_cmd: a high_priority command to evaluate +# value: sql command +# +# $should_kill: Expect the con_block to be killed or not +# value: 0/1 +# +# $recreate_table: Should recreate the test table or not +# value: 0/1 +# +# $throw_error: whether a command will throw lock_wait_timeout error. +# Note, optimize table catches all errors. +# value: 0/1 +############################################################################### + +## +## Print out the parameters of the test set +## (useful for debugging) +## +--echo +--echo ## Test parameters: +--echo ## use_sys_var = $use_sys_var +--echo ## con_block = $con_block +--echo ## con_kill = $con_kill +--echo ## cmd = $cmd +--echo ## high_priority_cmd = $high_priority_cmd +--echo ## should_kill = $should_kill +--echo ## recreate_table = $recreate_table +--echo ## throw_error = $throw_error +--echo + + +## +## Setup +## + +connection default; + +# create con1 +connect (con1,localhost,test_user1,,test,,); + +if ($recreate_table) { + # create t1 + --disable_warnings + drop table if exists t1; + --enable_warnings + create table t1 (i int); + show create table t1; + insert into t1 values (1), (2), (3); +} + +## +## Testing +## + +--echo connection: $con_block +--connection $con_block +--eval $blocking_sql + +--echo connection: $con_kill +--connection $con_kill +set lock_wait_timeout = 0.02; +set high_priority_lock_wait_timeout = 0.02; + +describe t1; + +--echo connection: default (for show processlist) +connection default; +--echo # both $con_block and $con_kill exist +--replace_column 1 <Id> 3 <Host> 5 <Command> 6 <Time> 7 <State> 8 <Info> 9 <RExam> 10 <RSent> 11 <TID> +show processlist; + +--echo connection: $con_kill +--connection $con_kill + +# command will fail without high_priority +if ($throw_error) { + --error ER_LOCK_WAIT_TIMEOUT + --eval $cmd +} + +if (!$throw_error) { + --eval $cmd +} + +if ($use_sys_var) { + set high_priority_ddl = 1; + select @@high_priority_ddl; + + # non-supported command will timeout + --error ER_LOCK_WAIT_TIMEOUT + lock tables t1 write; + + if (!$should_kill) { + # regular user ddl will fail regardless of high_priority_ddl being on + --error ER_LOCK_WAIT_TIMEOUT + --eval $cmd + } + + if ($should_kill) { + --eval $cmd + } + + # reset high_priority_ddl + set high_priority_ddl = 0; +} + +if (!$use_sys_var) { + if (!$should_kill) { + # regular user ddl will fail regardless of high_priority being on + --error ER_LOCK_WAIT_TIMEOUT + --eval $high_priority_cmd + } + + if ($should_kill) { + --eval $high_priority_cmd + } +} + +--echo connection: default (for show processlist) +connection default; +--replace_column 1 <Id> 3 <Host> 5 <Command> 6 <Time> 7 <State> 8 <Info> 9 <RExam> 10 <RSent> 11 <TID> +show processlist; + +disconnect con1; |