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

set binary column format only for parse/describe

Anton Lebedevich 13 лет назад
Родитель
Сommit
0e182fc044
2 измененных файлов с 5 добавлено и 4 удалено
  1. 2 1
      src/pgsql.erl
  2. 3 3
      src/pgsql_sock.erl

+ 2 - 1
src/pgsql.erl

@@ -197,7 +197,8 @@ receive_describe(C, Ref, Statement = #statement{}) ->
         {Ref, {types, Types}} ->
             receive_describe(C, Ref, Statement#statement{types = Types});
         {Ref, {columns, Columns}} ->
-            {ok, Statement#statement{columns = Columns}};
+            Columns2 = [Col#column{format = pgsql_wire:format(Col#column.type)} || Col <- Columns],
+            {ok, Statement#statement{columns = Columns2}};
         {Ref, no_data} ->
             {ok, Statement#statement{columns = []}};
         {Ref, Error = {error, _}} ->

+ 3 - 3
src/pgsql_sock.erl

@@ -375,11 +375,11 @@ on_message({$t, <<_Count:?int16, Bin/binary>>}, State) ->
 on_message({$T, <<Count:?int16, Bin/binary>>}, State) ->
     #state{queue = Q} = State,
     Columns = pgsql_wire:decode_columns(Count, Bin),
-    Columns2 = [C#column{format = pgsql_wire:format(C#column.type)} || C <- Columns],
-    notify(State, {columns, Columns2}),
+    notify(State, {columns, Columns}),
     State2 = case request_tag(State) of
                  C when C == squery ->
-                     State#state{columns = Columns2};
+                     %% TODO drop them on completion
+                     State#state{columns = Columns};
                  C when C == parse; C == describe ->
                      State#state{queue = queue:drop(Q)}
              end,