mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-35335 implicit commit at START TRANSACTION doesn't reset characteristics
This commit is contained in:
@@ -579,3 +579,23 @@ a
|
||||
# This statement should work, since last statement committed.
|
||||
INSERT INTO t1 VALUES (1);
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-35335 implicit commit at START TRANSACTION doesn't reset characteristics
|
||||
#
|
||||
create table t1 (a int) engine=innodb;
|
||||
insert t1 values (1);
|
||||
start transaction;
|
||||
set session transaction isolation level serializable;
|
||||
start transaction;
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
connect con1,localhost,root;
|
||||
set session innodb_lock_wait_timeout=0;
|
||||
update t1 set a=2;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
disconnect con1;
|
||||
connection default;
|
||||
rollback;
|
||||
drop table t1;
|
||||
# End of 10.6 tests
|
||||
|
@@ -677,3 +677,23 @@ SELECT * FROM t1;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-35335 implicit commit at START TRANSACTION doesn't reset characteristics
|
||||
--echo #
|
||||
create table t1 (a int) engine=innodb;
|
||||
insert t1 values (1);
|
||||
start transaction;
|
||||
set session transaction isolation level serializable;
|
||||
start transaction;
|
||||
select * from t1;
|
||||
connect con1,localhost,root;
|
||||
set session innodb_lock_wait_timeout=0;
|
||||
--error ER_LOCK_WAIT_TIMEOUT
|
||||
update t1 set a=2;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
rollback;
|
||||
drop table t1;
|
||||
|
||||
--echo # End of 10.6 tests
|
||||
|
@@ -120,11 +120,15 @@ bool trans_begin(THD *thd, uint flags)
|
||||
if (thd->in_multi_stmt_transaction_mode() ||
|
||||
(thd->variables.option_bits & OPTION_TABLE_LOCK))
|
||||
{
|
||||
bool was_in_trans= thd->server_status &
|
||||
(SERVER_STATUS_IN_TRANS | SERVER_STATUS_IN_TRANS_READONLY);
|
||||
thd->variables.option_bits&= ~OPTION_TABLE_LOCK;
|
||||
thd->server_status&=
|
||||
~(SERVER_STATUS_IN_TRANS | SERVER_STATUS_IN_TRANS_READONLY);
|
||||
DBUG_PRINT("info", ("clearing SERVER_STATUS_IN_TRANS"));
|
||||
res= MY_TEST(ha_commit_trans(thd, TRUE));
|
||||
if (was_in_trans)
|
||||
trans_reset_one_shot_chistics(thd);
|
||||
#ifdef WITH_WSREP
|
||||
if (wsrep_thd_is_local(thd))
|
||||
{
|
||||
|
Reference in New Issue
Block a user