anchor.diff:      [#tscolumndescription{name = Name, type = riak_pb_ts_codec:encode_field_type(Type)}
        || {Name, Type} <- lists:zip(ColumnNames, ColumnTypes)].
   
  -
  -
  -decoder_parse_error_resp({LineNo, riak_ql_parser, Msg}) when is_integer(LineNo) ->
  -    flat_format("~ts", [Msg]);
  -decoder_parse_error_resp({Token, riak_ql_parser, _}) ->
  -    flat_format("Unexpected token '~p'", [Token]);
  -decoder_parse_error_resp(Error) ->
  +make_decoder_error_response({LineNo, riak_ql_parser, Msg}) when is_integer(LineNo) ->
  +    make_rpberrresp(?E_PARSE_ERROR, flat_format("~ts", [Msg]));
  +make_decoder_error_response({Token, riak_ql_parser, _}) when is_binary(Token) ->
  +    make_rpberrresp(?E_PARSE_ERROR, flat_format("Unexpected token '~s'", [Token]));
  +make_decoder_error_response({Token, riak_ql_parser, _}) ->
  +    make_rpberrresp(?E_PARSE_ERROR, flat_format("Unexpected token '~p'", [Token]));
  +make_decoder_error_response(Error) ->
       Error.
  -
   
   flat_format(Format, Args) ->
       lists:flatten(io_lib:format(Format, Args)).
  -
   
   -ifdef(TEST).
   -include_lib("eunit/include/eunit.hrl").
  
positive.code:     Msg = riak_pb_codec:decode(Code, Bin),
      case Msg of
          #tsqueryreq{query = Q, cover_context = Cover} ->
              case catch decode_query(Q, Cover) of
                  {ok, DecodedQuery} ->
                      PermAndTarget = decode_query_permissions(DecodedQuery),
                      {ok, DecodedQuery, PermAndTarget};
                  {error, Error} ->
                      {error, decoder_parse_error_resp(Error)};
                  {'EXIT', {Error, _}} ->
                      {error, decoder_parse_error_resp(Error)}
              end;
          #tsgetreq{table = Table}->
              {ok, Msg, {"riak_kv.ts_get", Table}};
  
negative.code: 
  -spec process(atom() | ts_requests() | ts_query_types(), #state{}) ->
                       {reply, ts_responses(), #state{}}.
  process(#rpberrorresp{} = Error, State) ->
      {reply, Error, State};
  
  process(M = #tsputreq{table = Table}, State) ->
      check_table_and_call(Table, fun sub_tsputreq/4, M, State);
  
  