anchor.diff:          {stop, Reason}
       end.
   
  +-spec build_tables_on_boot({atom() | pid()}, [tuple()]) -> ok.
   build_tables_on_boot(_, []) -> ok;
   build_tables_on_boot(Sess, [{N, Cols, Types, Default}|R]) ->
       ?Info("creating table ~p", [N]),
  
positive.code: handle_info(Req,State) ->
      ?Debug("unknown info ~p", [Req]),
      {noreply, State}.
  terminate(Reason, #state{sess = Sess}) ->
      ?Debug("terminating, reason ~p", [Reason]),
      Sess:close(),
      ok.
  code_change(_OldVsn, State, _Extra)     -> {ok, State}.
  format_status(_Opt, [_PDict, _State])   -> ok.
  
  is_local_query(Qry) ->
      SysTabs = [erlang:atom_to_binary(Dt, utf8) || Dt <- [ddAdapter,ddInterface,ddConn,ddCmd,ddView,ddDash]],
      case sqlparse:parsetree(Qry) of
  
negative.code:     lists:sort(A1) =:= lists:sort(A2)
          andalso compare_connections(Con1#ddConn{access = []}, Con2#ddConn{access = []}).
  
  -spec internal_get_command({atom(), pid()}, ddEntityId() | binary()) -> #ddCmd{}.
  internal_get_command(Sess, IdOrName) ->
    ?Debug("get_command for id ~p", [IdOrName]),
    {Cmds, true} =
  