Browse Source

apgsql:squery, ipgsql:squery documentation

Anton Lebedevich 13 years ago
parent
commit
35963cea17
1 changed files with 37 additions and 4 deletions
  1. 37 4
      README

+ 37 - 4
README

@@ -39,17 +39,17 @@ Difference highlights (see CHANGES for full list):
   The timeout parameter will trigger an {error, timeout} result when the
   socket fails to connect within Timeout milliseconds.
 
-  Asynchronous connection example (applies to ipgsql too):
+  Asynchronous connect example (applies to ipgsql too):
 
   {ok, C} = apgsql:start_link(),
   Ref = apgsql:connect(C, "localhost", "username", [{database, "test_db"}]),
   receive
     {C, Ref, connected} ->
-      {ok, C};
+        {ok, C};
     {C, Ref, Error = {error, _}} ->
-      Error;
+        Error;
     {'EXIT', C, _Reason} ->
-      {error, closed}
+        {error, closed}
   end.
 
 
@@ -68,6 +68,39 @@ Difference highlights (see CHANGES for full list):
   The simple query protocol returns all columns as text (Erlang binaries)
   and does not support binding parameters.
 
+  apgsql:squery returns result as a single message:
+
+  Ref = apgsql:squery(C, Sql),
+  receive
+    {C, Ref, Res} -> Res
+  end.
+  Res has same fomat as return value of pgsql:squery.
+
+  ipgsql:squery returns result incrementally for each query inside Sql and
+  for each row:
+
+  Ref = ipgsql:squery(C, Sql),
+  receive
+    {C, Ref, {columns, Columns}} ->
+        %% columns description
+        Columns;
+    {C, Ref, {data, Row}} ->
+        %% single data row
+        Row;
+    {C, Ref, {error, _E} = Error} ->
+        Error;
+    {C, Ref, {complete, {_Type, Count}}} ->
+        %% execution of one insert/update/delete has finished
+        {ok, Count}; % affected rows count
+    {C, Ref, {complete, _Type}} ->
+        %% execution of one select has finished
+        ok;
+    {C, Ref, done} ->
+        %% execution of all queries from Sql has finished
+        done;
+  end.
+
+
 * Extended Query
 
   {ok, Columns, Rows}        = pgsql:equery(C, "select ...", [Parameters]).