Bug #7849 START TRANSACTION WITH CONSISTENT SNAPSHOT does not work if wrong isolat level
Submitted: 12 Jan 2005 23:15 Modified: 12 Jan 2005 23:30
Reporter: Guilhem Bichot Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:4.1 OS:Any (all)
Assigned to: Guilhem Bichot CPU Architecture:Any

[12 Jan 2005 23: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
[12 Jan 2005 23: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 20: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.