anchor.diff:                  end
               ,fetch_close_fun = fun() -> ok end
               ,stmt_close_fun  = fun() -> StmtRef:close() end
  -            ,filter_and_sort_fun = fun(FilterSpec, SrtSpec, Cols) -> dderloci:filter_and_sort(FilterSpec, SrtSpec, Cols, Query, Clms) end
  +            ,filter_and_sort_fun = fun(FilterSpec, SrtSpec, Cols) -> dderloci:filter_and_sort(FilterSpec, SrtSpec, Cols, Query, Clms, ContainRowId) end
               ,update_cursor_prepare_fun =
                   fun(ChangeList) ->
                           ?Info("The stmtref ~p, the table name: ~p and the change list: ~n~p", [StmtRef, TableName, ChangeList]),
  
positive.code: process_query(ok, Query, Connection) ->
      ?Debug([{session, Connection}], "query ~p -> ok", [Query]),
      [{<<"result">>, <<"ok">>}];
  process_query({ok, #stmtResult{sortSpec = SortSpec, stmtCols = Clms} = StmtRslt, TableName}, Query, {oci_port, _, _} = Connection) ->
      FsmCtx = generate_fsmctx_oci(StmtRslt, Query, Connection, TableName),
      StmtFsm = dderl_fsm:start_link(FsmCtx),
      ?Debug("StmtRslt ~p ~p", [Clms, SortSpec]),
      Columns = build_column_json(lists:reverse(Clms)),
  
negative.code:     Password = proplists:get_value(<<"password">>, BodyJson, <<>>),
      Tnsstr   = proplists:get_value(<<"tnsstring">>, BodyJson, <<>>),
      ?Info("session:open ~p", [{IpAddr, Port, Service, Type, User, Password, Tnsstr}]),    
      if
          Tnsstr =:= <<>> ->
              case Port of
              undefined ->
                      ErlOciSession = {error, "Invalid port"};
              Port ->
                  NewTnsstr = list_to_binary(io_lib:format(
                      "(DESCRIPTION="
  