anchor.diff:  init() ->
       #state{}.
   
  +-spec decode(integer(), binary()) ->
  +                    {ok, #ddl_v1{} | #riak_sql_v1{} | #tsputreq{},
  +                     {PermSpec::string(), Table::binary()}}.
   decode(Code, Bin) ->
       Msg = riak_pb_codec:decode(Code, Bin),
       case Msg of
  
positive.code:                             || {Name, Type} <- lists:zip(ColumnNames, ColumnTypes)],
                   rows = make_data(Rows)}.
  
  process_stream(_, _, State)->
      {ignore, State}.
  
  
negative.code:             {ok, Msg, {"riak_kv.ts_put", Table}}
      end.
  
  -spec encode(tuple()) -> {ok, iolist()}.
  encode(Message) ->
      {ok, riak_pb_codec:encode(Message)}.
  
  -spec process(#ddl_v1{} | #riak_sql_v1{} | #tsputreq{}, #state{}) ->
                       {reply, #tsqueryresp{} | #rpberrorresp{}, #state{}}.
  %% @ignore INSERT (as if)
  process(#tsputreq{table=Table, columns=_Columns, rows=Rows}, State) ->
      Data = make_data(Rows),
      Mod = riak_ql_ddl:make_module_name(Table),
      _Data2 = Mod:add_column_info(Data),
      {reply, #tsputresp{}, State};
  
  %% @ignore CREATE TABLE
  process(_DDL = #ddl_v1{}, State) ->
      %% {module, Module} = riak_ql_ddl_compiler:make_helper_mod(DDL),
      %% and what do we do with this DDL?
      %% isn't bucket creation (primarily) effected via bucket activation (via riak-admin)?
      {reply, #rpberrorresp{errcode = -3,
                            errmsg = "CREATE TABLE not supported via client interface;"
                            " use riak-admin command instead"},
       State};
  
  %% @ignore SELECT
  