@@ -129,7 +129,7 @@ defmodule Ecto.Adapters.SQL do
129129
130130 @ impl true
131131 def execute ( adapter_meta , query_meta , query , params , opts ) do
132- Ecto.Adapters.SQL . execute ( adapter_meta , query_meta , query , params , opts )
132+ Ecto.Adapters.SQL . execute ( :named , adapter_meta , query_meta , query , params , opts )
133133 end
134134
135135 @ impl true
@@ -689,26 +689,38 @@ defmodule Ecto.Adapters.SQL do
689689 end
690690
691691 @ doc false
692- def execute ( adapter_meta , query_meta , prepared , params , opts ) do
692+ def execute ( prepare , adapter_meta , query_meta , prepared , params , opts ) do
693693 % { num_rows: num , rows: rows } =
694- execute! ( adapter_meta , prepared , params , put_source ( opts , query_meta ) )
694+ execute! ( prepare , adapter_meta , prepared , params , put_source ( opts , query_meta ) )
695695
696696 { num , rows }
697697 end
698698
699- defp execute! ( adapter_meta , { :cache , update , { id , prepared } } , params , opts ) do
700- name = "ecto_" <> Integer . to_string ( id )
699+ defp execute! ( prepare , adapter_meta , { :cache , update , { id , prepared } } , params , opts ) do
700+ name = prepare_name ( prepare , id )
701701
702702 case sql_call ( adapter_meta , :prepare_execute , [ name , prepared ] , params , opts ) do
703703 { :ok , query , result } ->
704- update . ( { id , query } )
704+ maybe_update_cache ( prepare , update , { id , query } )
705705 result
706706 { :error , err } ->
707707 raise_sql_call_error err
708708 end
709709 end
710710
711- defp execute! ( adapter_meta , { :cached , update , reset , { id , cached } } , params , opts ) do
711+ defp execute! ( :unnamed = prepare , adapter_meta , { :cached , _update , _reset , { id , cached } } , params , opts ) do
712+ name = prepare_name ( prepare , id )
713+ prepared = String.Chars . to_string ( cached )
714+
715+ case sql_call ( adapter_meta , :prepare_execute , [ name , prepared ] , params , opts ) do
716+ { :ok , _query , result } ->
717+ result
718+ { :error , err } ->
719+ raise_sql_call_error err
720+ end
721+ end
722+
723+ defp execute! ( :named = _prepare , adapter_meta , { :cached , update , reset , { id , cached } } , params , opts ) do
712724 case sql_call ( adapter_meta , :execute , [ cached ] , params , opts ) do
713725 { :ok , query , result } ->
714726 update . ( { id , query } )
@@ -723,13 +735,19 @@ defmodule Ecto.Adapters.SQL do
723735 end
724736 end
725737
726- defp execute! ( adapter_meta , { :nocache , { _id , prepared } } , params , opts ) do
738+ defp execute! ( _prepare , adapter_meta , { :nocache , { _id , prepared } } , params , opts ) do
727739 case sql_call ( adapter_meta , :query , [ prepared ] , params , opts ) do
728740 { :ok , res } -> res
729741 { :error , err } -> raise_sql_call_error err
730742 end
731743 end
732744
745+ defp prepare_name ( :named , id ) , do: "ecto_" <> Integer . to_string ( id )
746+ defp prepare_name ( :unnamed , _id ) , do: ""
747+
748+ defp maybe_update_cache ( :named = _prepare , update , value ) , do: update . ( value )
749+ defp maybe_update_cache ( :unnamed = _prepare , _update , _value ) , do: :noop
750+
733751 @ doc false
734752 def stream ( adapter_meta , query_meta , prepared , params , opts ) do
735753 do_stream ( adapter_meta , prepared , params , put_source ( opts , query_meta ) )
0 commit comments