polardbxengine/mysql-test/suite/xengine/t/deadlock.test

45 lines
2.0 KiB
Plaintext

--echo #
--echo # Validate that deadlock errors don't occur with a high level of concurrency
--echo #
--source suite/xengine/include/have_xengine.inc
--echo # Disable for valgrind because this takes too long
--source include/not_valgrind.inc
--disable_warnings
DROP DATABASE IF EXISTS mysqlslap;
--enable_warnings
CREATE DATABASE mysqlslap;
USE mysqlslap;
CREATE TABLE t1(id1 BIGINT, id2 BIGINT, count INT, PRIMARY KEY(id1, id2), KEY(id2)) ENGINE=xengine;
CREATE TABLE t1rev(id1 BIGINT, id2 BIGINT, count INT, PRIMARY KEY(id1, id2) COMMENT "rev:cf2", KEY(id2) COMMENT "rev:cf2") ENGINE=xengine;
SET @save = @@global.xengine_lock_wait_timeout;
SET GLOBAL xengine_lock_wait_timeout = 60;
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="INSERT INTO t1 VALUES(1, 1, 1) ON DUPLICATE KEY UPDATE count=count+1"
SELECT count from t1;
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="UPDATE t1 SET count=count+1 WHERE id1=1 AND id2=1"
SELECT count from t1;
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="UPDATE t1 SET count=count+1 WHERE id2=1"
SELECT count from t1;
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="UPDATE t1 SET count=count+1"
SELECT count from t1;
# Same tests on a table with reverse orderings
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="INSERT INTO t1rev VALUES(1, 1, 1) ON DUPLICATE KEY UPDATE count=count+1"
SELECT count from t1rev;
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="UPDATE t1rev SET count=count+1 WHERE id1=1 AND id2=1"
SELECT count from t1rev;
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="UPDATE t1rev SET count=count+1 WHERE id2=1"
SELECT count from t1rev;
--exec $MYSQL_SLAP --silent --concurrency=50 --number-of-queries=5000 --query="UPDATE t1rev SET count=count+1"
SELECT count from t1rev;
SET GLOBAL xengine_lock_wait_timeout = @save;
DROP DATABASE mysqlslap;
--source suite/xengine/include/check_xengine_log_error.inc