|
@@ -7,7 +7,7 @@
|
|
|
close/1,
|
|
|
get_parameter/2,
|
|
|
squery/2,
|
|
|
- equery/2, equery/3,
|
|
|
+ equery/2, equery/3, equery/4,
|
|
|
parse/2, parse/3, parse/4,
|
|
|
describe/2, describe/3,
|
|
|
bind/3, bind/4,
|
|
@@ -101,7 +101,15 @@ equery(C, Sql) ->
|
|
|
-spec equery(connection(), string(), [bind_param()]) ->
|
|
|
ok_reply(equery_row()) | {error, query_error()}.
|
|
|
equery(C, Sql, Parameters) ->
|
|
|
- Name = ["equery-", atom_to_list(node()), pid_to_list(self())],
|
|
|
+ case parse(C, "", Sql, []) of
|
|
|
+ {ok, #statement{types = Types} = S} ->
|
|
|
+ Typed_Parameters = lists:zip(Types, Parameters),
|
|
|
+ gen_server:call(C, {equery, S, Typed_Parameters}, infinity);
|
|
|
+ Error ->
|
|
|
+ Error
|
|
|
+ end.
|
|
|
+
|
|
|
+equery(C, Name, Sql, Parameters) ->
|
|
|
case parse(C, Name, Sql, []) of
|
|
|
{ok, #statement{types = Types} = S} ->
|
|
|
Typed_Parameters = lists:zip(Types, Parameters),
|
|
@@ -113,10 +121,10 @@ equery(C, Sql, Parameters) ->
|
|
|
%% parse
|
|
|
|
|
|
parse(C, Sql) ->
|
|
|
- parse(C, "", Sql, []).
|
|
|
+ parse(C, Sql, []).
|
|
|
|
|
|
parse(C, Sql, Types) ->
|
|
|
- parse(C, "", Sql, Types).
|
|
|
+ sync_on_error(C, gen_server:call(C, {parse, Sql, Types}, infinity)).
|
|
|
|
|
|
-spec parse(connection(), iolist(), string(), [epgsql_type()]) ->
|
|
|
{ok, #statement{}} | {error, query_error()}.
|