ha_innodb.cc:
Fix bug: could not switch trx isolation back to REPEATABLE READ after switching it to some other level
This commit is contained in:
parent
3cf6a6b28e
commit
80f5621e4c
@ -3812,8 +3812,8 @@ innobase_map_isolation_level(
|
|||||||
enum_tx_isolation iso) /* in: MySQL isolation level code */
|
enum_tx_isolation iso) /* in: MySQL isolation level code */
|
||||||
{
|
{
|
||||||
switch(iso) {
|
switch(iso) {
|
||||||
case ISO_READ_COMMITTED: return(TRX_ISO_READ_COMMITTED);
|
|
||||||
case ISO_REPEATABLE_READ: return(TRX_ISO_REPEATABLE_READ);
|
case ISO_REPEATABLE_READ: return(TRX_ISO_REPEATABLE_READ);
|
||||||
|
case ISO_READ_COMMITTED: return(TRX_ISO_READ_COMMITTED);
|
||||||
case ISO_SERIALIZABLE: return(TRX_ISO_SERIALIZABLE);
|
case ISO_SERIALIZABLE: return(TRX_ISO_SERIALIZABLE);
|
||||||
case ISO_READ_UNCOMMITTED: return(TRX_ISO_READ_UNCOMMITTED);
|
case ISO_READ_UNCOMMITTED: return(TRX_ISO_READ_UNCOMMITTED);
|
||||||
default: ut_a(0); return(0);
|
default: ut_a(0); return(0);
|
||||||
@ -3868,11 +3868,9 @@ ha_innobase::external_lock(
|
|||||||
trx->n_mysql_tables_in_use++;
|
trx->n_mysql_tables_in_use++;
|
||||||
prebuilt->mysql_has_locked = TRUE;
|
prebuilt->mysql_has_locked = TRUE;
|
||||||
|
|
||||||
if (thd->variables.tx_isolation != ISO_REPEATABLE_READ) {
|
trx->isolation_level = innobase_map_isolation_level(
|
||||||
trx->isolation_level = innobase_map_isolation_level(
|
|
||||||
(enum_tx_isolation)
|
(enum_tx_isolation)
|
||||||
thd->variables.tx_isolation);
|
thd->variables.tx_isolation);
|
||||||
}
|
|
||||||
|
|
||||||
if (trx->isolation_level == TRX_ISO_SERIALIZABLE
|
if (trx->isolation_level == TRX_ISO_SERIALIZABLE
|
||||||
&& prebuilt->select_lock_type == LOCK_NONE) {
|
&& prebuilt->select_lock_type == LOCK_NONE) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user