Bug #7849 START TRANSACTION WITH CONSISTENT SNAPSHOT does not work if wrong isolat level
Submitted: 13 Jan 2005 0:15 Modified: 13 Jan 2005 0:30
Reporter: Guilhem Bichot
Status: Not a Bug
Category:Server Severity:S3 (Non-critical)
Version:4.1 OS:Any (all)
Assigned to: Guilhem Bichot Target Version:

[13 Jan 2005 0:15] Guilhem Bichot
Description:
The default isolation level of MySQL is REPEATABLE READ, in this default situation the
bug does not exist.
It exists if user moves to less isolated levels. For example in a transaction at READ
COMMITTED level, each SELECT creates a new consistent read.
If the transaction was started with START TRANSACTION WITH CONSISTENT SNAPSHOT, we do
mean one unique consistent read for all tables, so this command must escalate the coming
transaction's level to REPEATABLE READ if it's not already at this level or higher
(SERIALIZABLE)

How to repeat:
see description
[13 Jan 2005 0:30] Guilhem Bichot
Mmm but this is not a bug. The definition of START TRANSACTION WITH CONSISTENT SNAPSHOT is
(from the manual):
The effect is the same as issuing a @code{START
TRANSACTION} followed by a @code{SELECT} from any @code{InnoDB} table.
It just means "start the consistent read now and not at the next SELECT". It does not say
what should happen at the 2nd SELECT.
Implicitely changing the isolation level does not fit into the manual's definition. So
this is not a bug. It's the user's (e.g. mysqldump client) responsibility to set the
proper isolation level if he wants a consistent read over everything.
[30 Jan 2006 21:09] Perrin Harkins
I understand the reasoning that this is not a bug, but I think the documentation for this
feature is very misleading.  I expected it to provide a consistent snapshot until the
next commit, regardless of the current isolation level.  I suggest explicitly saying that
it starts a transaction *at the current isolation level* and thus doesn't provide
consistency between reads when in an isolation level below REPEATABLE READ.