mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.7.3.1'
This commit is contained in:
@@ -39,6 +39,7 @@ public class Db_conn {
|
||||
public void Env_vacuum() {Exec_sql_plog_ntx("vacuuming: url=" + this.Conn_info().Db_api(), "VACUUM;");}
|
||||
public void Meta_tbl_create(Dbmeta_tbl_itm meta) {engine.Meta_tbl_create(meta); engine.Meta_idx_create(Gfo_usr_dlg_.Noop, meta.Idxs().To_ary());}
|
||||
public void Meta_tbl_delete(String tbl) {engine.Meta_tbl_delete(tbl);}
|
||||
public void Meta_tbl_remake(Db_tbl tbl) {engine.Meta_tbl_delete(tbl.Tbl_name()); tbl.Create_tbl();}
|
||||
public void Meta_tbl_remake(Dbmeta_tbl_itm meta) {engine.Meta_tbl_delete(meta.Name()); engine.Meta_tbl_create(meta);}
|
||||
public void Meta_idx_assert(String tbl, String suffix, String... flds) {if (engine.Meta_idx_exists(tbl + "__" + suffix)) return; this.Meta_idx_create(tbl, suffix, flds);}
|
||||
public void Meta_idx_assert(String tbl, String suffix, Dbmeta_idx_fld... flds) {if (engine.Meta_idx_exists(tbl + "__" + suffix)) return; this.Meta_idx_create(tbl, suffix, flds);}
|
||||
|
||||
@@ -17,26 +17,33 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.dbs; import gplx.*;
|
||||
public class Db_conn_bldr {
|
||||
private final Object thread_lock = new Object(); // LOCK:synchronized else random failures in Schema_mgr due to diff conn pointing to same db; DATE:2016-07-12
|
||||
private Db_conn_bldr_wkr wkr;
|
||||
public void Reg_default_sqlite() {wkr = Db_conn_bldr_wkr__sqlite.Instance; wkr.Clear_for_tests();}
|
||||
public void Reg_default_mem() {wkr = Db_conn_bldr_wkr__mem.Instance; wkr.Clear_for_tests();}
|
||||
public boolean Exists(Io_url url) {return wkr.Exists(url);}
|
||||
public Db_conn Get(Io_url url) {return wkr.Get(url);}
|
||||
public Db_conn New(Io_url url) {return wkr.New(url);}
|
||||
public boolean Exists(Io_url url) {synchronized (thread_lock) {return wkr.Exists(url);}}
|
||||
public Db_conn Get(Io_url url) {synchronized (thread_lock) {return wkr.Get(url);}}
|
||||
public Db_conn New(Io_url url) {synchronized (thread_lock) {return wkr.New(url);}}
|
||||
public Db_conn_bldr_data Get_or_new(Io_url url) {
|
||||
boolean exists = wkr.Exists(url);
|
||||
Db_conn conn = exists ? Get(url) : New(url);
|
||||
return new Db_conn_bldr_data(conn, exists);
|
||||
synchronized (thread_lock) {
|
||||
boolean exists = wkr.Exists(url);
|
||||
Db_conn conn = exists ? Get(url) : New(url);
|
||||
return new Db_conn_bldr_data(conn, exists);
|
||||
}
|
||||
}
|
||||
public Db_conn Get_or_noop(Io_url url) {
|
||||
Db_conn rv = wkr.Get(url);
|
||||
return rv == null ? Db_conn_.Noop : rv;
|
||||
synchronized (thread_lock) {
|
||||
Db_conn rv = wkr.Get(url);
|
||||
return rv == null ? Db_conn_.Noop : rv;
|
||||
}
|
||||
}
|
||||
public Db_conn Get_or_autocreate(boolean autocreate, Io_url url) {
|
||||
boolean exists = wkr.Exists(url);
|
||||
if (exists) return Get(url);
|
||||
if (autocreate) return New(url);
|
||||
else throw Err_.new_("dbs", "db does not exist", "url", url.Raw());
|
||||
synchronized (thread_lock) {
|
||||
boolean exists = wkr.Exists(url);
|
||||
if (exists) return Get(url);
|
||||
if (autocreate) return New(url);
|
||||
else throw Err_.new_("dbs", "db does not exist", "url", url.Raw());
|
||||
}
|
||||
}
|
||||
public static final Db_conn_bldr Instance = new Db_conn_bldr(); Db_conn_bldr() {}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ package gplx.dbs.metas.parsers; import gplx.*; import gplx.dbs.*; import gplx.db
|
||||
import gplx.core.brys.*; import gplx.core.btries.*;
|
||||
abstract class Dbmeta_fld_wkr__base {
|
||||
private byte[] hook;
|
||||
private final Btrie_slim_mgr words_trie = Btrie_slim_mgr.ci_a7();
|
||||
private final Btrie_slim_mgr words_trie = Btrie_slim_mgr.ci_a7();
|
||||
private int words_len;
|
||||
@gplx.Virtual public int Tid() {return Tid_other;}
|
||||
public void Ctor(byte[] hook, byte[]... words_ary) {
|
||||
@@ -46,47 +46,47 @@ class Dbmeta_fld_wkr__end_comma extends Dbmeta_fld_wkr__base {
|
||||
public Dbmeta_fld_wkr__end_comma() {this.Ctor(Hook);}
|
||||
@Override public int Tid() {return Tid_end_comma;}
|
||||
@Override protected void When_match(Dbmeta_fld_itm fld) {}
|
||||
private static final byte[] Hook = Bry_.new_a7(",");
|
||||
public static final Dbmeta_fld_wkr__end_comma Instance = new Dbmeta_fld_wkr__end_comma();
|
||||
private static final byte[] Hook = Bry_.new_a7(",");
|
||||
public static final Dbmeta_fld_wkr__end_comma Instance = new Dbmeta_fld_wkr__end_comma();
|
||||
}
|
||||
class Dbmeta_fld_wkr__end_paren extends Dbmeta_fld_wkr__base {
|
||||
public Dbmeta_fld_wkr__end_paren() {this.Ctor(Hook);}
|
||||
@Override public int Tid() {return Tid_end_paren;}
|
||||
@Override protected void When_match(Dbmeta_fld_itm fld) {}
|
||||
private static final byte[] Hook = Bry_.new_a7(")");
|
||||
public static final Dbmeta_fld_wkr__end_paren Instance = new Dbmeta_fld_wkr__end_paren();
|
||||
private static final byte[] Hook = Bry_.new_a7(")");
|
||||
public static final Dbmeta_fld_wkr__end_paren Instance = new Dbmeta_fld_wkr__end_paren();
|
||||
}
|
||||
class Dbmeta_fld_wkr__nullable_null extends Dbmeta_fld_wkr__base {
|
||||
public Dbmeta_fld_wkr__nullable_null() {this.Ctor(Hook);}
|
||||
@Override protected void When_match(Dbmeta_fld_itm fld) {
|
||||
fld.Nullable_tid_(Dbmeta_fld_itm.Nullable_null);
|
||||
}
|
||||
private static final byte[] Hook = Bry_.new_a7("null");
|
||||
public static final Dbmeta_fld_wkr__nullable_null Instance = new Dbmeta_fld_wkr__nullable_null();
|
||||
private static final byte[] Hook = Bry_.new_a7("null");
|
||||
public static final Dbmeta_fld_wkr__nullable_null Instance = new Dbmeta_fld_wkr__nullable_null();
|
||||
}
|
||||
class Dbmeta_fld_wkr__nullable_not extends Dbmeta_fld_wkr__base {
|
||||
public Dbmeta_fld_wkr__nullable_not() {this.Ctor(Hook, Bry_null);}
|
||||
@Override protected void When_match(Dbmeta_fld_itm fld) {
|
||||
fld.Nullable_tid_(Dbmeta_fld_itm.Nullable_not_null);
|
||||
}
|
||||
private static final byte[] Hook = Bry_.new_a7("not"), Bry_null = Bry_.new_a7("null");
|
||||
public static final Dbmeta_fld_wkr__nullable_not Instance = new Dbmeta_fld_wkr__nullable_not();
|
||||
private static final byte[] Hook = Bry_.new_a7("not"), Bry_null = Bry_.new_a7("null");
|
||||
public static final Dbmeta_fld_wkr__nullable_not Instance = new Dbmeta_fld_wkr__nullable_not();
|
||||
}
|
||||
class Dbmeta_fld_wkr__primary_key extends Dbmeta_fld_wkr__base {
|
||||
public Dbmeta_fld_wkr__primary_key() {this.Ctor(Hook, Bry_key);}
|
||||
@Override protected void When_match(Dbmeta_fld_itm fld) {
|
||||
fld.Primary_y_();
|
||||
}
|
||||
private static final byte[] Hook = Bry_.new_a7("primary"), Bry_key = Bry_.new_a7("key");
|
||||
public static final Dbmeta_fld_wkr__primary_key Instance = new Dbmeta_fld_wkr__primary_key();
|
||||
private static final byte[] Hook = Bry_.new_a7("primary"), Bry_key = Bry_.new_a7("key");
|
||||
public static final Dbmeta_fld_wkr__primary_key Instance = new Dbmeta_fld_wkr__primary_key();
|
||||
}
|
||||
class Dbmeta_fld_wkr__autonumber extends Dbmeta_fld_wkr__base {
|
||||
public Dbmeta_fld_wkr__autonumber() {this.Ctor(Hook);}
|
||||
@Override protected void When_match(Dbmeta_fld_itm fld) {
|
||||
fld.Autonum_y_();
|
||||
}
|
||||
private static final byte[] Hook = Bry_.new_a7("autoincrement");
|
||||
public static final Dbmeta_fld_wkr__autonumber Instance = new Dbmeta_fld_wkr__autonumber();
|
||||
private static final byte[] Hook = Bry_.new_a7("autoincrement");
|
||||
public static final Dbmeta_fld_wkr__autonumber Instance = new Dbmeta_fld_wkr__autonumber();
|
||||
}
|
||||
class Dbmeta_fld_wkr__default extends Dbmeta_fld_wkr__base {
|
||||
public Dbmeta_fld_wkr__default() {this.Ctor(Hook);}
|
||||
@@ -143,6 +143,6 @@ class Dbmeta_fld_wkr__default extends Dbmeta_fld_wkr__base {
|
||||
return String_.new_a7(src, bgn, end);
|
||||
}
|
||||
@Override protected void When_match(Dbmeta_fld_itm fld) {}
|
||||
private static final byte[] Hook = Bry_.new_a7("default");
|
||||
public static final Dbmeta_fld_wkr__default Instance = new Dbmeta_fld_wkr__default();
|
||||
private static final byte[] Hook = Bry_.new_a7("default");
|
||||
public static final Dbmeta_fld_wkr__default Instance = new Dbmeta_fld_wkr__default();
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ package gplx.dbs.metas.parsers; import gplx.*; import gplx.dbs.*; import gplx.db
|
||||
import gplx.core.brys.*; import gplx.core.btries.*;
|
||||
import gplx.dbs.engines.sqlite.*;
|
||||
public class Dbmeta_parser__fld {
|
||||
private final Btrie_rv trv = new Btrie_rv();
|
||||
public Dbmeta_fld_itm Parse_fld(Sql_bry_rdr rdr) { // starts after "(" or ","; EX: "(fld1 int", ", fld2 int"; ends at ")"
|
||||
byte[] name = rdr.Read_sql_identifier();
|
||||
Dbmeta_fld_tid type = this.Parse_type(rdr);
|
||||
@@ -41,12 +42,12 @@ public class Dbmeta_parser__fld {
|
||||
}
|
||||
return fld;
|
||||
}
|
||||
Dbmeta_fld_wkr__base type_wkr = (Dbmeta_fld_wkr__base)rdr.Chk_trie_as_obj(fld_trie);
|
||||
Dbmeta_fld_wkr__base type_wkr = (Dbmeta_fld_wkr__base)rdr.Chk_trie_as_obj(trv, fld_trie);
|
||||
switch (type_wkr.Tid()) {
|
||||
case Dbmeta_fld_wkr__base.Tid_end_comma:
|
||||
case Dbmeta_fld_wkr__base.Tid_end_paren: return fld;
|
||||
default:
|
||||
rdr.Move_to(fld_trie.Match_pos());
|
||||
rdr.Move_to(trv.Pos());
|
||||
type_wkr.Match(rdr, fld);
|
||||
break;
|
||||
}
|
||||
@@ -54,7 +55,7 @@ public class Dbmeta_parser__fld {
|
||||
}
|
||||
@gplx.Internal protected Dbmeta_fld_tid Parse_type(Bry_rdr rdr) {
|
||||
rdr.Skip_ws();
|
||||
Dbmeta_parser__fld_itm type_itm = (Dbmeta_parser__fld_itm)rdr.Chk_trie_as_obj(type_trie);
|
||||
Dbmeta_parser__fld_itm type_itm = (Dbmeta_parser__fld_itm)rdr.Chk_trie_as_obj(trv, type_trie);
|
||||
rdr.Move_by(type_itm.Word().length);
|
||||
int paren_itms_count = type_itm.Paren_itms_count();
|
||||
int len_1 = Int_.Min_value, len_2 = Int_.Min_value;
|
||||
|
||||
@@ -25,7 +25,7 @@ public abstract class Db_in_wkr__base {
|
||||
public void Select_in(Cancelable cancelable, Db_conn conn, int full_bgn, int full_end) {
|
||||
int part_len = Interval();
|
||||
Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance;
|
||||
boolean show_progress = this.Show_progress();
|
||||
boolean show_progress = this.Show_progress();;
|
||||
for (int part_bgn = full_bgn; part_bgn < full_end; part_bgn += part_len) {
|
||||
int part_end = part_bgn + part_len;
|
||||
if (part_end > full_end) part_end = full_end;
|
||||
|
||||
Reference in New Issue
Block a user