mirror of
https://github.com/MariaDB/server.git
synced 2025-10-24 16:38:14 +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 | ||