anchor.diff:  %% ---------------------------------------------------
   % functions supporting SELECT
   
  --spec make_tsqueryresp({[binary()], [simple_field_type()], [any()]}) -> #tsqueryresp{}.
  +-spec make_tsqueryresp([] | {[riak_pb_ts_codec:tscolumnname()],
  +                             [riak_pb_ts_codec:tscolumntype()],
  +                             [[riak_pb_ts_codec:ldbvalue()]]}) -> #tsqueryresp{}.
  +make_tsqueryresp({_, _, []}) ->
  +    #tsqueryresp{columns = [], rows = []};
   make_tsqueryresp({ColumnNames, ColumnTypes, JustRows}) ->
       #tsqueryresp{columns = make_tscolumndescription_list(ColumnNames, ColumnTypes),
                    rows = riak_pb_ts_codec:encode_rows(ColumnTypes, JustRows)}.
  
positive.code:             BucketProps = riak_core_bucket:get_bucket(table_to_bucket(Table)),
              {reply, missing_helper_module(Table, BucketProps), State}
      end;
  
  process(#tsgetreq{table = Table, key = PbCompoundKey,
                    timeout = Timeout},
  
negative.code:     #tsqueryresp{columns = make_tscolumndescription_list(ColumnNames, ColumnTypes),
                   rows = riak_pb_ts_codec:encode_rows(ColumnTypes, DescribeTableRows)}.
  
  -spec get_column_types(list(binary()), module()) -> [riak_pb_ts_codec:tscolumntype()].
  get_column_types(ColumnNames, Mod) ->
      [Mod:get_field_type(N) || N <- ColumnNames].
  
  -spec make_tscolumndescription_list([binary()], [riak_pb_ts_codec:tscolumntype()]) ->
                                             [#tscolumndescription{}].
  