Просмотр исходного кода

Merge branch 'unnamed_statements' of https://github.com/kevsmith/epgsql into devel

David N. Welton 11 лет назад
Родитель
Сommit
cd671dbe05
1 измененных файлов с 12 добавлено и 4 удалено
  1. 12 4
      src/pgsql.erl

+ 12 - 4
src/pgsql.erl

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