anchor.diff:        0, Data).
   
   
  +-spec make_ts_keys([riak_pb_ts_codec:ldbvalue()], #ddl_v1{}) ->
  +                          {ok, {binary(), binary()}} | {error, {bad_key_length, integer(), integer()}}.
   make_ts_keys(CompoundKey, DDL = #ddl_v1{local_key = #key_v1{ast = LKParams},
                                           fields = Fields}) ->
  -
       %% 1. use elements in Key to form a complete data record:
       KeyFields = [F || #param_v1{name = [F]} <- LKParams],
  -    KeyAssigned = lists:zip(KeyFields, CompoundKey),
  -    VoidRecord = [{F, void} || #riak_field_v1{name = F} <- Fields],
  -    %% (void values will not be looked at in riak_ql_ddl:make_key;
  -    %% only LK-constituent fields matter)
  -    BareValues =
  -        list_to_tuple(
  -          [proplists:get_value(K, KeyAssigned)
  -           || {K, _} <- VoidRecord, lists:member(K, KeyFields)]),
  -
  -    %% 2. make the PK and LK
  -    PK = eleveldb_ts:encode_key(
  -           riak_ql_ddl:get_partition_key(DDL, BareValues)),
  -    LK = eleveldb_ts:encode_key(
  -           riak_ql_ddl:get_local_key(DDL, BareValues)),
  -    {PK, LK}.
  +    case {length(KeyFields), length(CompoundKey)} of
  +        {_N, _N} ->
  +            KeyAssigned = lists:zip(KeyFields, CompoundKey),
  +            VoidRecord = [{F, void} || #riak_field_v1{name = F} <- Fields],
  +            %% (void values will not be looked at in riak_ql_ddl:make_key;
  +            %% only LK-constituent fields matter)
  +            BareValues =
  +                list_to_tuple(
  +                  [proplists:get_value(K, KeyAssigned)
  +                   || {K, _} <- VoidRecord, lists:member(K, KeyFields)]),
  +
  +            %% 2. make the PK and LK
  +            PK = eleveldb_ts:encode_key(
  +                   riak_ql_ddl:get_partition_key(DDL, BareValues)),
  +            LK = eleveldb_ts:encode_key(
  +                   riak_ql_ddl:get_local_key(DDL, BareValues)),
  +            {ok, {PK, LK}};
  +       {Need, Got} ->
  +            {error, {bad_key_length, Need, Got}}
  +    end.
   
   
   %% ---------------------------------------------------
  
positive.code:     Mod = riak_ql_ddl:make_module_name(Table),
      try Mod:get_ddl() of
          DDL ->
              PKLK = make_ts_keys(CompoundKey, DDL),
              %% = {PK, LK} = Key to pass to riak_client:delete
              Result =
                  riak_client:delete_vclock(
                    {Table, Table}, PKLK, VClock, Options,
                    {riak_client, [node(), undefined]}),
              case Result of
                  ok ->
                      {reply, tsdelresp, State};
                  {error, notfound} ->
                      {reply, tsdelresp, State};
                  {error, Reason} ->
  
negative.code:                     Rows = riak_pb_ts_codec:encode_rows([Row]),
                      {reply, #tsgetresp{columns = ColumnDescriptions,
                                         rows = Rows}, State};
                  {error, {bad_key_length, Got, Need}} ->
                      {reply, key_element_count_mismatch(Got, Need), State};
                  {error, Reason} ->
                      {reply, make_rpberrresp(?E_GET, to_string(Reason)), State}
              end
  