anchor.diff:  get_row(Conn, XSqlVars, Columns, NullBitmap, Idx) ->
       [X | RestVars] = XSqlVars,
       if NullBitmap band (1 bsl Idx) =/= 0 ->
  -            {V, C2} = {nil, Conn};
  +            V = nil;
           true ->
  -            {V, C2} = get_raw_value(Conn, X)
  +            V = get_raw_value(Conn, X)
           end,
  -    get_row(C2, RestVars, [V | Columns], NullBitmap, Idx + 1).
  +    get_row(Conn, RestVars, [V | Columns], NullBitmap, Idx + 1).
   
   get_row(Conn, [], Columns) ->
       {lists:reverse(Columns), Conn};
  
positive.code:     end,
      if
          L =:= 0 ->
              {"", Conn};
          L > 0 ->
              {ok, V} = efirebirdsql_socket:recv_align(Conn, L),
              {V, Conn}
      end.
  
  get_raw_or_null_value(Conn, XSqlVar) ->
      {V, _C2} = get_raw_value(Conn, XSqlVar),
      {ok, NullFlag} = efirebirdsql_socket:recv(Conn, 4),
      case NullFlag of
      <<0,0,0,0>> -> {V, Conn};
  
negative.code:     {op_response, F, Buf} = get_response(Conn),
      NewList = lists:flatten([SegmentList, get_blob_segment_list(Buf, [])]),
      case F of
      2 -> NewList;
      _ -> get_blob_segment(Conn, BlobHandle, NewList)
      end.
  
  get_blob_data(Conn, BlobId) ->
      efirebirdsql_socket:send(Conn, op_open_blob(BlobId, Conn#conn.trans_handle)),
      {op_response, BlobHandle, _} = get_response(Conn),
      SegmentList = get_blob_segment(Conn, BlobHandle, []),
      efirebirdsql_socket:send(Conn, op_close_blob(BlobHandle)),
      {op_response, 0, _} = get_response(Conn),
      R = list_to_binary(SegmentList),
      {ok, R}.
  
  convert_raw_value(Conn, _XSqlVar, nil) ->
      {nil, Conn};
  