mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-37215 SELECT FOR UPDATE crash in SERIALIZABLE
ha_innobase::store_lock(): Set also trx->will_lock when starting
a transaction at SERIALIZABLE isolation level. This fixes up
commit 7fbbbc983f
(MDEV-36330).
This commit is contained in:
@@ -283,4 +283,13 @@ COMMIT;
|
||||
disconnect consistent;
|
||||
connection default;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-37215 SELECT...FOR UPDATE crash under SERIALIZABLE
|
||||
#
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
a
|
||||
DROP TABLE t1;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
# End of 10.6 tests
|
||||
|
@@ -295,5 +295,15 @@ COMMIT;
|
||||
--connection default
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-37215 SELECT...FOR UPDATE crash under SERIALIZABLE
|
||||
--echo #
|
||||
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
DROP TABLE t1;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
|
||||
--source include/wait_until_count_sessions.inc
|
||||
--echo # End of 10.6 tests
|
||||
|
@@ -16510,6 +16510,7 @@ ha_innobase::store_lock(
|
||||
case ISO_SERIALIZABLE:
|
||||
auto trx_state = trx->state;
|
||||
if (trx_state == TRX_STATE_NOT_STARTED) {
|
||||
trx->will_lock = true;
|
||||
trx_start_if_not_started(trx, false);
|
||||
trx->read_view.open(trx);
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user