anchor.diff:                          %% filter FilterSpec   =  {'and',[{Col1,["ValueA".."ValueN"]}, {Col2,["ValueX"]}]}
                           %% sort   GuiSortSpec  =  [{Col1,'asc'}..{ColN,'desc'}]
           , row_with_key/2
  +        , get_count/1
           , get_columns/1
           , get_query/1
           , get_table_name/1
  
positive.code: row_with_key(RowId, {?MODULE,Pid}) when is_integer(RowId) -> 
      % ?Debug("row_with_key ~p", [RowId]),
      gen_fsm:sync_send_all_state_event(Pid,{"row_with_key", RowId}).
  
  %% the return tuple type #stmtcol{}. but is not imported
  -spec get_columns({atom(), pid()}) -> [tuple()].
  
negative.code: -spec gres(atom(), integer(), list(), binary(), integer(), boolean(), #gres{}) -> #gres{}.
  gres(SN,Cnt,ToolTip,Sql,DirtyCount,GuiCol,Gres0) ->
      Disable = case DirtyCount of
          0 ->
              [{<<"commit">>,<<"nothing to commit">>},{<<"rollback">>,<<"nothing to rollback">>}|Gres0#gres.disable];
          _ ->
              Gres0#gres.disable
      end,
      Promo = if
          (SN == aborted) ->
              [{<<"restart">>,<<"restart to see more data">>}|Gres0#gres.promote];
          (GuiCol) ->
              [{<<"restart">>,<<"refresh to see correct sorting">>}|Gres0#gres.promote];
          true ->
              Gres0#gres.promote
      end,
      SNbin = list_to_binary(atom_to_list(SN)),
      TTbin = list_to_binary(ToolTip),
      Gres0#gres{state=SNbin,cnt=Cnt,toolTip=TTbin,sql=Sql,disable=empty_override(Disable),promote=empty_override(Promo)}.
  