anchor.diff:  %%% parse status vector
   parse_status_vector_integer(Conn) ->
       {ok, <<NumArg:32>>} = efirebirdsql_socket:recv(Conn, 4),
  -    {NumArg, Conn}.
  +    NumArg.
   
   parse_status_vector_string(Conn) ->
  -    {Len, C2} = parse_status_vector_integer(Conn),
  -    {ok, Bin} = efirebirdsql_socket:recv_align(C2, Len),
  -    {binary_to_list(Bin), Conn}.
  +    Len = parse_status_vector_integer(Conn),
  +    {ok, Bin} = efirebirdsql_socket:recv_align(Conn, Len),
  +    binary_to_list(Bin).
   
   parse_status_vector_args(Conn, ErrNo, Template, Args) ->
       {ok, <<IscArg:32>>} = efirebirdsql_socket:recv(Conn, 4),
  
positive.code:     ?DEBUG_FORMAT("convert_raw_value() start~n", []),
      CookedValue = case XSqlVar#column.type of
          long ->
              C2 = Conn,
              efirebirdsql_conv:parse_number(RawValue, XSqlVar#column.scale);
          short ->
              C2 = Conn,
              efirebirdsql_conv:parse_number(RawValue, XSqlVar#column.scale);
          int64 ->
              C2 = Conn,
              efirebirdsql_conv:parse_number(RawValue, XSqlVar#column.scale);
          int128 ->
              C2 = Conn,
              efirebirdsql_conv:parse_number(RawValue, XSqlVar#column.scale);
          quad ->
              C2 = Conn,
              efirebirdsql_conv:parse_number(RawValue, XSqlVar#column.scale);
          double ->
              C2 = Conn,
              L = size(RawValue) * 8, <<V:L/float>> = RawValue, V;
          float ->
              C2 = Conn,
              L = size(RawValue) * 8, <<V:L/float>> = RawValue, V;
          date ->
              C2 = Conn,
              efirebirdsql_conv:parse_date(RawValue);
          time ->
              C2 = Conn,
              efirebirdsql_conv:parse_time(RawValue);
          timestamp ->
              C2 = Conn,
              efirebirdsql_conv:parse_timestamp(RawValue);
          time_tz ->
              C2 = Conn,
              efirebirdsql_conv:parse_time_tz(RawValue, Conn#conn.timezone_name_by_id);
          timestamp_tz ->
              C2 = Conn,
              efirebirdsql_conv:parse_timestamp_tz(RawValue, Conn#conn.timezone_name_by_id);
          decimal_fixed ->
              C2 = Conn,
              efirebirdsql_decfloat:decimal_fixed_to_decimal(RawValue, XSqlVar#column.scale);
          decimal64 ->
              C2 = Conn,
              efirebirdsql_decfloat:decimal64_to_decimal(RawValue);
          decimal128 ->
              C2 = Conn,
              efirebirdsql_decfloat:decimal128_to_decimal(RawValue);
          blob ->
              {ok, B, C2} = get_blob_data(Conn, RawValue),
              B;
          boolean ->
              C2 = Conn,
              if RawValue =/= <<0,0,0,0>> -> true; true -> false end;
          text ->
              C2 = Conn,
              list_to_binary(lists:reverse(lists:dropwhile(fun(32) -> true; (_) -> false end, lists:reverse(binary_to_list(RawValue)))));
          _ ->
              C2 = Conn,
              RawValue
          end,
      ?DEBUG_FORMAT("convert_raw_value() end ~p~n", [CookedValue]),
      {CookedValue, C2}.
  
  convert_row(Conn, [], [], Converted) ->
      ?DEBUG_FORMAT("convert_row()~n", []),
  
negative.code:     end,
      if
          L =:= 0 ->
              "";
          L > 0 ->
              {ok, V} = efirebirdsql_socket:recv_align(Conn, L),
              V
      end.
  
  get_raw_or_null_value(Conn, XSqlVar) ->
      V = get_raw_value(Conn, XSqlVar),
      {ok, NullFlag} = efirebirdsql_socket:recv(Conn, 4),
      case NullFlag of
      <<0,0,0,0>> -> {V, Conn};
  