Commit a89ee3cd authored by Marko Mäkelä's avatar Marko Mäkelä Committed by Sergei Golubchik

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.
parent 51e48b9f
...@@ -14512,8 +14512,11 @@ ha_innobase::check( ...@@ -14512,8 +14512,11 @@ ha_innobase::check(
/* We must run the index record counts at an isolation level /* We must run the index record counts at an isolation level
>= READ COMMITTED, because a dirty read can see a wrong number >= READ COMMITTED, because a dirty read can see a wrong number
of records in some index; to play safe, we use always of records in some index; to play safe, we use always
REPEATABLE READ here */ REPEATABLE READ here (except when undo logs are unavailable) */
m_prebuilt->trx->isolation_level = TRX_ISO_REPEATABLE_READ; 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); ut_ad(!m_prebuilt->table->corrupted);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment