예제 #1
0
 public void Split__exec(Split_ctx ctx, Split_rslt_mgr rslt_mgr, Xowd_page_itm page, int page_id) {
   if (page.Ns_id() == gplx.xowa.wikis.nss.Xow_ns_.Tid__main && !page.Redirected()) {
     bldr.Exec_seq_itm(page.Id());
     rslt_wkr.On__nth__itm(
         Rndm_seq_tbl.Db_row_size_fixed, bldr.Qry_idx(), bldr.Rng_idx(), bldr.Seq_in_qry());
   }
 }
예제 #2
0
 public void Split__trg__nth__new(Split_ctx ctx, Db_conn trg_conn) {
   if (cur_ns_id != ctx.Trg_ns()) {
     if (cur_ns_id != -1) bldr.Exec_qry_end();
     cur_ns_id = ctx.Trg_ns();
     bldr.Exec_qry_bgn(Rndm_qry_itm.New_by_ns(ctx.Wiki(), cur_ns_id));
   }
   bldr.Exec_rng_bgn();
   bldr.Conn().Txn_bgn("rndm");
 }
예제 #3
0
  public void Split__trg__nth__rls(Split_ctx ctx, Db_conn trg_conn) {
    // make rndm_rng and add
    Rndm_rng_itm rng_itm = bldr.Exec_rng_end_or_null();
    if (rng_itm == null) return;
    Rndm_rng_tbl rng_tbl = new Rndm_rng_tbl(trg_conn);
    rng_tbl.Create_tbl();
    Db_stmt rng_stmt = rng_tbl.Insert_stmt();
    rng_tbl.Insert(
        rng_stmt, rng_itm.Mgr_idx(), rng_itm.Rng_idx(), rng_itm.Seq_bgn(), rng_itm.Seq_end());
    rng_stmt.Rls();
    bldr.Conn().Txn_end();

    // make rndm_seq and bulk copy
    Rndm_seq_tbl seq_tbl = new Rndm_seq_tbl(trg_conn);
    seq_tbl.Create_tbl();
    Split_tbl_.Bld_insert_by_select(tmp_bfr, seq_tbl.Tbl_name(), seq_tbl.Flds());
    tmp_bfr.Add_str_u8_fmt(
        "WHERE {0} = {1} AND {2} = {3}",
        seq_tbl.Fld__qry_idx(), bldr.Qry_idx(), seq_tbl.Fld__rng_idx(), bldr.Rng_idx());
    attach_mgr.Conn_main_(trg_conn).Conn_links_(new Db_attach_itm("src_db", bldr.Conn()));
    attach_mgr.Exec_sql(tmp_bfr.To_str_and_clear());
    //			bldr.Conn().Txn_bgn("rndm");
  }
예제 #4
0
 public void Split__term(Split_ctx ctx) {
   bldr.Exec_qry_end();
 }