Remove being/number methods from transaction class

上级 160cc695
......@@ -8,7 +8,7 @@ def initialize(connection)
def begin_transaction(options = {})
transaction_class = @stack.empty? ? RealTransaction : SavepointTransaction
transaction = transaction_class.new(@connection, current_transaction, options)
transaction = transaction_class.new(@connection, current_transaction, "active_record_#{@stack.size}", options)
@stack.push(transaction)
transaction
......@@ -102,14 +102,6 @@ def set_state(state)
end
class ClosedTransaction < Transaction #:nodoc:
def number
0
end
def begin(options = {})
RealTransaction.new(connection, self, options)
end
def closed?
true
end
......@@ -144,14 +136,6 @@ def joinable?
@joinable
end
def number
parent.number + 1
end
def begin(options = {})
SavepointTransaction.new(connection, self, options)
end
def rollback
perform_rollback
parent
......@@ -202,8 +186,8 @@ def open?
end
class RealTransaction < OpenTransaction #:nodoc:
def initialize(connection, parent, options = {})
super
def initialize(connection, parent, _, options = {})
super(connection, parent, options)
if options[:isolation]
connection.begin_isolated_db_transaction(options[:isolation])
......@@ -226,26 +210,23 @@ def perform_commit
class SavepointTransaction < OpenTransaction #:nodoc:
attr_reader :savepoint_name
def initialize(connection, parent, options = {})
def initialize(connection, parent, savepoint_name, options = {})
if options[:isolation]
raise ActiveRecord::TransactionIsolationError, "cannot set transaction isolation in a nested transaction"
end
super
# Savepoint name only counts the Savepoint transactions, so we need to subtract 1
@savepoint_name = "active_record_#{number - 1}"
connection.create_savepoint(@savepoint_name)
super(connection, parent, options)
connection.create_savepoint(@savepoint_name = savepoint_name)
end
def perform_rollback
connection.rollback_to_savepoint(@savepoint_name)
connection.rollback_to_savepoint(savepoint_name)
rollback_records
end
def perform_commit
@state.set_state(:committed)
connection.release_savepoint(@savepoint_name)
connection.release_savepoint(savepoint_name)
end
end
end
......
......@@ -546,7 +546,7 @@ def test_sqlite_add_column_in_transaction
def test_transactions_state_from_rollback
connection = Topic.connection
transaction = ActiveRecord::ConnectionAdapters::ClosedTransaction.new(connection).begin
transaction = ActiveRecord::ConnectionAdapters::TransactionManager.new(connection).begin_transaction
assert transaction.open?
assert !transaction.state.rolledback?
......@@ -560,7 +560,7 @@ def test_transactions_state_from_rollback
def test_transactions_state_from_commit
connection = Topic.connection
transaction = ActiveRecord::ConnectionAdapters::ClosedTransaction.new(connection).begin
transaction = ActiveRecord::ConnectionAdapters::TransactionManager.new(connection).begin_transaction
assert transaction.open?
assert !transaction.state.rolledback?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册