MDEV-18952 CHECK TABLE should use READ UNCOMMITED if innodb_force_recovery>=5
MDEV-15418 changed InnoDB to use the READ UNCOMMITTED isolation level when the transaction recovery is disabled by setting innodb_force_recovery to 5 or 6. Alas, CHECK TABLE would still internally use REPEATABLE READ. If the server was started without purge running into completion (and resetting all DB_TRX_ID thanks to MDEV-12288), this would cause errors about any DB_TRX_ID that had not been reset to 0.
This commit is contained in:
parent
51e48b9f89
commit
a89ee3cd15
@ -14512,8 +14512,11 @@ ha_innobase::check(
|
||||
/* We must run the index record counts at an isolation level
|
||||
>= READ COMMITTED, because a dirty read can see a wrong number
|
||||
of records in some index; to play safe, we use always
|
||||
REPEATABLE READ here */
|
||||
m_prebuilt->trx->isolation_level = TRX_ISO_REPEATABLE_READ;
|
||||
REPEATABLE READ here (except when undo logs are unavailable) */
|
||||
m_prebuilt->trx->isolation_level = srv_force_recovery
|
||||
>= SRV_FORCE_NO_UNDO_LOG_SCAN
|
||||
? TRX_ISO_READ_UNCOMMITTED
|
||||
: TRX_ISO_REPEATABLE_READ;
|
||||
|
||||
ut_ad(!m_prebuilt->table->corrupted);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user