public List_adp Load( Xomp_mgr_db mgr_db, String machine_name, List_adp list, int list_idx, int list_len) { List_adp rv = List_adp_.New(); // add remaining pages from old pool to new_pool; for (int i = list_idx; i < list_len; ++i) { rv.Add((Xomp_page_itm) list.Get_at(i)); } // load pages into new pool Xomp_lock_mgr lock_mgr = mgr_db.Lock_mgr(); int uid_db = lock_mgr.Uid_prv__get(machine_name); if (uid_db == Xomp_lock_mgr__fsys.Uid__eos) return rv; // assert that uids must be incrementally larger; handle one machine reaching end, // and putting -1 in queue; int uid_new = 0; try { uid_new = this.Load_from_db(rv, uid_db); } finally { lock_mgr.Uid_prv__rls(machine_name, uid_new); } if (show_msg__fetched_pool) Gfo_usr_dlg_.Instance.Note_many( "", "", "fetched new pool: old=~{0} new=~{1}", uid_db, uid_new); return rv; }
@Override public void Cmd_run() { Init_bldr_bmks(); this.time_bgn = System_.Ticks(); int total_pending = Xob_xfer_regy_tbl.Select_total_pending(bldr_conn); // if (total_pending > 250000 && src_bin_mgr__fsdb_version == null) usr_dlg.Note_many("", "", "total pending: ~{0}", total_pending); List_adp list = List_adp_.New(); boolean loop = true; while (loop) { byte rslt = Select_fsdb_itms(list); switch (rslt) { case Select_rv_stop: if (bin_db_mgr.Tier_id_is_last(tier_id_val)) loop = false; else { ++tier_id_val; page_id_val = 0; continue; } break; case Select_rv_next_page: ++page_id_val; lnki_id_val = 0; continue; case Select_rv_process: break; } if (!loop) break; // no more ttls found int len = list.Count(); usr_dlg.Prog_many("", "", "fetched pages: ~{0}", len); for (int i = 0; i < len; ++i) { Xodb_tbl_oimg_xfer_itm fsdb = (Xodb_tbl_oimg_xfer_itm) list.Get_at(i); Download_itm(fsdb); if (exit_now || exec_count >= exec_count_max || exec_fail >= exec_fail_max || page_id_val >= page_id_end) { this.Txn_sav(); return; } } } exec_done = true; }
public Xobc_import_step_itm[] Select_by_task_id(int task_id) { List_adp list = List_adp_.New(); Db_rdr rdr = conn.Stmt_sql( Db_sql_.Make_by_fmt( String_.Ary( "SELECT s.*", "FROM import_step s", " JOIN step_map sm ON s.step_id = sm.step_id", "WHERE sm.task_id = {0}"), task_id)) .Exec_select__rls_auto(); try { while (rdr.Move_next()) { list.Add(New_itm(rdr)); } } finally { rdr.Rls(); } return (Xobc_import_step_itm[]) list.To_ary_and_clear(Xobc_import_step_itm.class); }
public class Mem_tbl { private final List_adp where_rows = List_adp_.New(); private final Hash_adp autonum_hash = Hash_adp_.New(); public Mem_tbl(Dbmeta_tbl_itm meta) { this.meta = meta; } public Dbmeta_tbl_itm Meta() { return meta; } private final Dbmeta_tbl_itm meta; public final List_adp rows = List_adp_.New(); public int Insert(Mem_stmt stmt) { Mem_row itm = new Mem_row(); Dbmeta_fld_mgr flds = meta.Flds(); int len = flds.Len(); for (int i = 0; i < len; ++i) { Dbmeta_fld_itm fld = flds.Get_at(i); String fld_name = fld.Name(); Object val = fld.Autonum() ? Autonum_calc(fld_name) : stmt.Args_get_by(fld_name); if (val == null) continue; // NOTE: allow Bulk_insert from test to skip filds itm.Set_by(fld_name, val); } rows.Add(itm); return 1; } private int Autonum_calc(String name) { Int_obj_ref autonum_itm = (Int_obj_ref) autonum_hash.Get_by(name); if (autonum_itm == null) { autonum_itm = Int_obj_ref.New(0); autonum_hash.Add(name, autonum_itm); } return autonum_itm.Val_add(); } public int Update(Mem_stmt stmt) { Db_qry_update qry = (Db_qry_update) stmt.Qry(); Criteria where_crt = qry.Where(); if (where_crt == null) where_crt = Criteria_.All; Mem_stmt_args_.Fill(stmt.Stmt_args(), where_crt); Select_rows_where(where_rows, stmt, where_crt); int where_rows_len = where_rows.Count(); String[] update_cols = qry.Cols_for_update(); int update_cols_len = update_cols.length; for (int i = 0; i < where_rows_len; ++i) { Mem_row itm = (Mem_row) where_rows.Get_at(i); for (int j = 0; j < update_cols_len; ++j) itm.Set_by(update_cols[j], stmt.Args_get_at(j)); } return where_rows_len; } public int Delete(Mem_stmt stmt) { Db_qry_delete qry = (Db_qry_delete) stmt.Qry(); Mem_stmt_args_.Fill(stmt.Stmt_args(), qry.Where()); Select_rows_where(where_rows, stmt, qry.Where()); int where_rows_len = where_rows.Count(); for (int i = 0; i < where_rows_len; ++i) { Mem_row itm = (Mem_row) where_rows.Get_at(i); rows.Del(itm); } return where_rows_len; } public Db_rdr Select(Mem_stmt stmt) { String[] select = null; Criteria where = null; Db_qry__select_in_tbl qry = Db_qry__select_in_tbl.as_(stmt.Qry()); if (qry == null) { Db_qry__select_cmd qry2 = (Db_qry__select_cmd) stmt.Qry(); select = To_str_ary(qry2.Cols().Flds); where = qry2.Where_itm().Root; } else { select = qry.Select_flds(); where = qry.Where(); } Mem_stmt_args_.Fill(stmt.Stmt_args(), where); Select_rows_where(where_rows, stmt, where); return new Mem_rdr(select, (Mem_row[]) where_rows.To_ary_and_clear(Mem_row.class)); } private String[] To_str_ary(Sql_select_fld_list flds) { int len = flds.Len(); String[] rv = new String[len]; for (int i = 0; i < len; ++i) rv[i] = flds.Get_at(i).Fld; return rv; } private void Select_rows_where(List_adp rv, Mem_stmt stmt, Criteria crt) { rv.Clear(); int rows_len = rows.Count(); for (int i = 0; i < rows_len; ++i) { Mem_row itm = (Mem_row) rows.Get_at(i); if (crt.Matches(itm)) rv.Add(itm); } } }