diff --git a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb index 834dad7d4d..dc067b999d 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb @@ -142,7 +142,10 @@ def materialized? end def restore! - @materialized = false + if materialized? + @materialized = false + materialize! + end end def rollback_records @@ -390,8 +393,6 @@ def restore_transactions @stack.each(&:restore!) - materialize_transactions unless @lazy_transactions_enabled - true end diff --git a/activerecord/test/cases/adapter_test.rb b/activerecord/test/cases/adapter_test.rb index e9397c082b..c17cb3eab1 100644 --- a/activerecord/test/cases/adapter_test.rb +++ b/activerecord/test/cases/adapter_test.rb @@ -405,7 +405,7 @@ def setup assert raw_transaction_open?(@connection) @connection.reconnect!(restore_transactions: true) assert_predicate @connection, :transaction_open? - assert_not raw_transaction_open?(@connection) + assert raw_transaction_open?(@connection) ensure @connection.reconnect! assert_not_predicate @connection, :transaction_open?