Alan Garrison wrote:
Russ Brown wrote:Does anyone know where I can find the 'official' definition of what it meant by ACID compliance? We're having a discussion about it that we could do with resolving. In particular, the key point is what it meant by the 'C' part. I maintain that MySQL is not ACID compliant because it will (among other things) swallow integers that don't fit into a column silently and just truncate it, while our DBA (while agreeing that this is not good behaviour) maintains that this is not what the C part means: he says that's just about transaction states (succeed or fail etc).
I personally read "C" to disallow MySQL's truncation behavior. Suppose you have a simple/stupid banking database with only one table listing the amount in the bank for each customer. The manager sums up the balances to find out how much is in the bank. Meanwhile Larry owes Jane some money so he has it transferred to her account. The balance the manager gets should be identical whether she runs the query before, during or after the transaction.
Now Jane is a good saver so when Larry transfers the money, MySQL truncates her account at the max amount allowed by the column-type. The manager's reports will be incorrect as will Jane's account balance. Unless Larry and Jane bank at Enron S&L, this is bound to violate some rule or integrity constraint.
But if you and the DBA are in agreement that MySQL behaves badly, why waste time arguing over which letter in some acronym is pertinent?
Cheers, Steve