mirror of
https://github.com/MariaDB/server.git
synced 2025-08-14 22:41:34 +02:00
![]() At TRANSACTION ISOLATION LEVEL SERIALIZABLE, InnoDB would fail to flag a write/read conflict, which would be a violation already at the more relaxed REPEATABLE READ level when innodb_snapshot_isolation=ON. Fix: Create a read view and start the transaction at the same time. Thus, lock checks will be able to consult the correct read view to flag ER_CHECKREAD if we are about to lock a record that was committed after the start of our transaction. innobase_start_trx_and_assign_read_view(): At any other isolation level than READ UNCOMMITTED, do create a read view. This is needed for the correct operation of START TRANSACTION WITH CONSISTENT SNAPSHOT. ha_innobase::store_lock(): At SERIALIZABLE isolation level, if the transaction was not started yet, start it and open a read view. An alternative way to achieve this would be to make trans_begin() treat START TRANSACTION (or BEGIN) in the same way as START TRANSACTION WITH CONSISTENT SNAPSHOT when the isolation level is SERIALIZABLE. innodb_isolation_level(const THD*): A simpler version of innobase_map_isolation_level(). Compared to earlier, we will return READ UNCOMMITTED also if the :newraw option is set for the InnoDB system tablespace. Reviewed by: Vladislav Lesin |
||
---|---|---|
.. | ||
parts | ||
trx | ||
alter_tablespace.opt | ||
autoinc_secondary.rdiff | ||
cache_index.rdiff | ||
checksum_table_live.rdiff | ||
col_opt_not_null.opt | ||
col_opt_null.opt | ||
define_engine.inc | ||
disabled.def | ||
fulltext_search.rdiff | ||
index_enable_disable.rdiff | ||
index_type_hash.rdiff | ||
insert_delayed.rdiff | ||
lock_concurrent.rdiff | ||
optimize_table.rdiff | ||
repair_table.rdiff | ||
suite.opt | ||
tbl_opt_index_dir.rdiff | ||
tbl_opt_insert_method.rdiff | ||
tbl_opt_row_format.rdiff | ||
tbl_opt_union.rdiff | ||
type_blob.opt | ||
type_char_indexes.rdiff | ||
type_float_indexes.rdiff | ||
type_text.opt |