aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
Commit message (Collapse)AuthorAgeFilesLines
...
* Reduced memory leak problem in transactions by lazily updating AR objects ↵wangjohn2013-02-201-3/+10
| | | | with new transaction state. If AR object has a callback, the callback will be performed immediately (non-lazily) so the transaction still has to keep records with callbacks.
* Refactored transaction state into its own object. Each transaction creates a ↵wangjohn2013-01-211-5/+24
| | | | new transaction state object upon initialization.
* Created state for a transaction and added tests.wangjohn2013-01-201-0/+12
|
* Support for specifying transaction isolation levelJon Leighton2012-09-211-9/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If your database supports setting the isolation level for a transaction, you can set it like so: Post.transaction(isolation: :serializable) do # ... end Valid isolation levels are: * `:read_uncommitted` * `:read_committed` * `:repeatable_read` * `:serializable` You should consult the documentation for your database to understand the semantics of these different levels: * http://www.postgresql.org/docs/9.1/static/transaction-iso.html * https://dev.mysql.com/doc/refman/5.0/en/set-transaction.html An `ActiveRecord::TransactionIsolationError` will be raised if: * The adapter does not support setting the isolation level * You are joining an existing open transaction * You are creating a nested (savepoint) transaction The mysql, mysql2 and postgresql adapters support setting the transaction isolation level. However, support is disabled for mysql versions below 5, because they are affected by a bug (http://bugs.mysql.com/bug.php?id=39170) which means the isolation level gets persisted outside the transaction.
* Fix testJon Leighton2012-09-151-13/+19
| | | | Accidentally checked in commented test code. Fail. >_<
* Move transaction joinability into the transaction objectJon Leighton2012-09-151-1/+8
|
* Alter the naming structure a bitJon Leighton2012-09-151-105/+103
|
* Split Open into Real and SavepointJon Leighton2012-09-151-25/+38
|
* Don't do the rollback in #commitJon Leighton2012-09-151-17/+6
| | | | | The caller needs to have knowledge of the rollback either way, so do it all in the caller (#transaction)
* Store the transaction number in the transaction objectJon Leighton2012-09-151-5/+24
| | | | This avoids us having to manually increment and decrement it.
* Start to tease out transaction handling into a state machineJon Leighton2012-09-151-0/+124