Description:
conn1 INSERT and conn2 UPDATE on different rows on same table results in timeout.
How to repeat:
###################### ps_ver03621.test ######################
# #
# test for Veri VER03621 #
# #
##############################################################
USE test;
SET GLOBAL sql_mode="ANSI_QUOTES,NO_BACKSLASH_ESCAPES";
SET GLOBAL init_connect='SET AUTOCOMMIT=0';
SET SESSION sql_mode="ANSI_QUOTES,NO_BACKSLASH_ESCAPES";
# SET SESSION init_connect='SET AUTOCOMMIT=0';
--disable_warnings
DROP TABLE IF EXISTS VERI_CLNT;
--enable_warnings
let $type= 'InnoDB';
# Create table VERI_CLNT
eval CREATE TABLE "VERI_CLNT" (
"CLIENT" char(3) character set latin1 collate latin1_bin NOT NULL default '000',
"ARG1" char(3) character set latin1 collate latin1_bin NOT NULL default '',
"ARG2" char(3) character set latin1 collate latin1_bin NOT NULL default '',
"FUNCTION" varchar(10) character set latin1 collate latin1_bin NOT NULL default '',
"FUNCTINT" int(11) NOT NULL default '0',
PRIMARY KEY ("CLIENT","ARG1","ARG2"),
KEY "VERI_CLNT~1" ("ARG1","FUNCTION","FUNCTINT"),
KEY "VERI_CLNT~2" ("ARG1","ARG2")
) ENGINE = $type DEFAULT CHARSET=latin1;
BEGIN;
# PREPARE stmt_name
PREPARE stmt FROM 'INSERT INTO `VERI_CLNT`
( `CLIENT` ,`ARG1` ,`ARG2` ,`FUNCTION` ,`FUNCTINT` )
VALUES( ? , ? , ? , ? , ? )';
# SET vars
SET @var1 = '000';
SET @var2 = ' 0';
SET @var3 = ' 0';
SET @var4 = 'Text 001';
SET @var5 = 0;
# EXECUTE stmt_name
EXECUTE stmt USING @var1, @var2, @var3, @var4, @var5;
# SET vars
SET @var1 = '000';
SET @var2 = ' 1';
SET @var3 = ' 0';
SET @var4 = 'Text 005';
SET @var5 = 1;
# EXECUTE stmt_name
EXECUTE stmt USING @var1, @var2, @var3, @var4, @var5;
# DEALLOCATE PREPARE stmt_name;
DEALLOCATE PREPARE stmt ;
COMMIT;
# BEGIN Operations
# Connection default
BEGIN;
PREPARE stmt FROM 'DELETE FROM `VERI_CLNT` WHERE `CLIENT` = ? AND `ARG1` = ?';
# SET vars
SET @var1 = '000';
SET @var2 = ' 0';
# EXECUTE stmt_name
EXECUTE stmt USING @var1, @var2;
# DEALLOCATE PREPARE stmt_name;
DEALLOCATE PREPARE stmt ;
# No commit here!
# Connection 2
# New Connection
connect (conn2, localhost, root, ,test);
connection conn2;
BEGIN;
PREPARE stmt FROM 'UPDATE `VERI_CLNT` SET `FUNCTION` = ? WHERE `CLIENT` = ? AND `ARG1` = ?';
# SET vars
SET @var1 = 'error';
SET @var2 = '000';
SET @var3 = ' 1';
# EXECUTE stmt_name
EXECUTE stmt USING @var1, @var2, @var3;
DEALLOCATE PREPARE stmt ;
COMMIT;
# Clean up
DROP TABLE VERI_CLNT;