Marcos,
you are right. I should have tested this. There is a bug in 4.0 that InnoDB
only adjusts the trx isolation level if you have set it to something else
than REPEATABLE READ. That is why you are not able to switch it back to
REPEATABLE READ once you have changed it!
I have now fixed the bug in upcoming 4.0.8. Lenz will probably build 4.0.8
soon after he returns from his vacation around Jan 20th.
Thank you,
Heikki
Innobase Oy
..................
Subject: Re: Could not set isolation level back to REPEATABLE-READ (4.0.6
win)
From: Marcos Chaves
Date: Mon, 30 Dec 2002 23:08:06 -0300 (ART)
----------------------------------------------------------------------------
----
Hello Heikki,
> The read is 'repeatable' only for SELECTs executed
AFTER you have set the
> isolation level of A back to REPEATABLE READ. Only
after that InnoDB keeps
> the same snapshot open for all consistent reads in
the transaction of A.
> Note also that the isolation level of B does not
affect at all what A sees
> in a consistent read.
I still didn't get it, because I understood that what
you explained is
different from what is happening in my example.
The SELECTs executed AFTER changing the isolation
level of A back to REPEATABLE
READ always return the latest 'commited' data
available, working as if the
isolation level was still READ COMMITED.
I also tried to experiment with the SERIALIZABLE
isolation level, and when I
try to change it back to REPEATABLE READ, I still get
the tables locked (I can,
however, change it to other isolation levels). That's
why I tought it might be
a bug that does not allow me to change the isolation
level back to REPEATABLE
READ. Maybe I'm not understanding the transitions
between different isolation
levels, but the only way I could get back to the
original isolation level is by
opening a new connection.
Thanks again,
Marcos
How-to-Repeat: