@@ -97,6 +97,11 @@ defmodule Ecto.Adapters.SQL do
9797 Ecto.Adapters.SQL . checkout ( meta , opts , fun )
9898 end
9999
100+ @ impl true
101+ def checked_out? ( meta ) do
102+ Ecto.Adapters.SQL . checked_out? ( meta )
103+ end
104+
100105 @ impl true
101106 def loaders ( { :map , _ } , type ) , do: [ & Ecto.Type . embedded_load ( type , & 1 , :json ) ]
102107 def loaders ( :binary_id , type ) , do: [ Ecto.UUID , type ]
@@ -636,6 +641,12 @@ defmodule Ecto.Adapters.SQL do
636641 checkout_or_transaction ( :run , adapter_meta , opts , callback )
637642 end
638643
644+ @ doc false
645+ def checked_out? ( adapter_meta ) do
646+ % { pid: pool } = adapter_meta
647+ get_conn ( pool ) != nil
648+ end
649+
639650 ## Query
640651
641652 @ doc false
@@ -754,13 +765,13 @@ defmodule Ecto.Adapters.SQL do
754765 opts = with_log ( telemetry , params , opts ++ default_opts )
755766
756767 case get_conn ( pool ) do
757- nil ->
758- raise "cannot reduce stream outside of transaction"
759-
760- conn ->
768+ % DBConnection { conn_mode: :transaction } = conn ->
761769 sql
762770 |> apply ( :stream , [ conn , statement , params , opts ] )
763771 |> Enumerable . reduce ( acc , fun )
772+
773+ _ ->
774+ raise "cannot reduce stream outside of transaction"
764775 end
765776 end
766777
@@ -770,12 +781,13 @@ defmodule Ecto.Adapters.SQL do
770781 opts = with_log ( telemetry , params , opts ++ default_opts )
771782
772783 case get_conn ( pool ) do
773- nil ->
774- raise "cannot collect into stream outside of transaction"
775- conn ->
784+ % DBConnection { conn_mode: :transaction } = conn ->
776785 sql
777786 |> apply ( :stream , [ conn , statement , params , opts ] )
778787 |> Collectable . into ( )
788+
789+ _ ->
790+ raise "cannot collect into stream outside of transaction"
779791 end
780792 end
781793
0 commit comments