mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-35124 Set innodb_snapshot_isolation=ON by default
From the very beginning, the default InnoDB transaction isolation level
REPEATABLE READ does not correspond to any well formed definition.
The main issue is the lack of write/write conflict detection.
To fix that and to make REPEATABLE READ correspond to Snapshot Isolation,
b8a6719889
introduced the Boolean
session variable innodb_snapshot_isolation. It was disabled by default
in order not to break any user applications.
In a new major version of MariaDB Server, we had better enable this
parameter by default.
This commit is contained in:
@ -10,6 +10,7 @@ SELECT * FROM t WHERE a = 20 FOR UPDATE;
|
||||
a b
|
||||
20 20
|
||||
connect con_2,localhost,root,,;
|
||||
SET innodb_snapshot_isolation=OFF;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
SET DEBUG_SYNC = 'lock_trx_handle_wait_enter SIGNAL upd_locked WAIT_FOR upd_cont EXECUTE 2';
|
||||
|
@ -8,6 +8,7 @@ SELECT * FROM t WHERE a = 20 FOR UPDATE;
|
||||
a b
|
||||
20 20
|
||||
connect con_2,localhost,root,,;
|
||||
SET innodb_snapshot_isolation=OFF;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
BEGIN;
|
||||
SET DEBUG_SYNC = 'lock_trx_handle_wait_before_unlocked_wait_lock_check SIGNAL upd_locked WAIT_FOR upd_cont';
|
||||
|
@ -8,6 +8,7 @@ SELECT * FROM t WHERE a = 20 FOR UPDATE;
|
||||
a b
|
||||
20 20
|
||||
connect con_2,localhost,root,,;
|
||||
SET innodb_snapshot_isolation=OFF;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
SET DEBUG_SYNC = 'lock_trx_handle_wait_enter SIGNAL upd_locked WAIT_FOR upd_cont';
|
||||
SET DEBUG_SYNC = 'trx_t_release_locks_enter SIGNAL sel_cont WAIT_FOR upd_cont_2';
|
||||
|
@ -80,6 +80,7 @@ COUNT(*)
|
||||
#
|
||||
# Do some DML in the default connection and leave the transaction pending.
|
||||
#
|
||||
SET innodb_snapshot_isolation=OFF;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
UPDATE t1 SET c2 = c2 * 3 WHERE c1 = 1;
|
||||
@ -140,6 +141,7 @@ COUNT(*)
|
||||
# Connection 1 REPEATABLE READ
|
||||
#
|
||||
connect con1,localhost,root,,;
|
||||
SET innodb_snapshot_isolation=OFF;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||
BEGIN;
|
||||
########## innodb_isolation_selects.inc ##########
|
||||
|
@ -20,6 +20,7 @@ commit;
|
||||
connection a;
|
||||
commit;
|
||||
connection b;
|
||||
set innodb_snapshot_isolation=off;
|
||||
set session transaction isolation level read committed;
|
||||
update t1 set a=10 where a=5;
|
||||
connection a;
|
||||
|
@ -17,6 +17,7 @@ insert into `t1` (rowid, f1, f2) values (1, 1, 10), (2, 1, NULL);
|
||||
connect a,localhost,root,,;
|
||||
connect b,localhost,root,,;
|
||||
connection a;
|
||||
set innodb_snapshot_isolation=OFF;
|
||||
start transaction with consistent snapshot;
|
||||
connection b;
|
||||
start transaction;
|
||||
|
@ -11,6 +11,7 @@ a b
|
||||
1 1
|
||||
2 2
|
||||
connect con_weird,localhost,root;
|
||||
SET innodb_snapshot_isolation=OFF;
|
||||
BEGIN;
|
||||
SELECT * FROM t;
|
||||
a b
|
||||
|
Reference in New Issue
Block a user