let sprintf_refObj_format name = [
sprintf "CREATE TABLE %s (
- source varchar(255) binary not null,
- h_occurrence varchar(255) binary not null,
- h_position varchar(62) binary not null,
+ source varchar(255) not null,
+ h_occurrence varchar(255) not null,
+ h_position varchar(62) not null,
h_depth integer
);" name]
let sprintf_refSort_format name = [
sprintf "CREATE TABLE %s (
- source varchar(255) binary not null,
- h_position varchar(62) binary not null,
+ source varchar(255) not null,
+ h_position varchar(62) not null,
h_depth integer not null,
- h_sort varchar(5) binary not null
+ h_sort varchar(5) not null
);" name]
let sprintf_refRel_format name = [
sprintf "CREATE TABLE %s (
- source varchar(255) binary not null,
- h_position varchar(62) binary not null,
+ source varchar(255) not null,
+ h_position varchar(62) not null,
h_depth integer not null
);" name]
let sprintf_objectName_format name = [
sprintf "CREATE TABLE %s (
- source varchar(255) binary not null,
- value varchar(255) binary not null
+ source varchar(255) not null,
+ value varchar(255) not null
);" name]
let sprintf_hits_format name = [
sprintf "CREATE TABLE %s (
- source varchar(255) binary not null,
+ source varchar(255) not null,
no integer not null
);" name]
let sprintf_count_format name = [
sprintf "CREATE TABLE %s (
- source varchar(255) binary unique not null,
+ source varchar(255) unique not null,
conclusion smallint(6) not null,
hypothesis smallint(6) not null,
statement smallint(6) not null
(* INDEXES *)
let sprintf_refObj_index name = [
-sprintf "CREATE INDEX %s_index ON %s (source(219),h_occurrence(219),h_position);" name name;
+sprintf "CREATE INDEX %s_index ON %s (source,h_occurrence,h_position);" name name;
+(*sprintf "CREATE INDEX %s_index ON %s (source(219),h_occurrence(219),h_position);" name name;*)
sprintf "CREATE INDEX %s_occurrence ON %s (h_occurrence);" name name ]
let sprintf_refSort_index name = [
let sprintf_refRel_index name = [
sprintf "CREATE INDEX %s_index ON %s (source,h_position,h_depth);" name name]
-let sprintf_refObj_index_drop name = [
-sprintf "DROP INDEX %s_index ON %s;" name name ]
+let format_drop name sufix dtype dbd =
+ if HSql.isMysql dtype dbd then
+ (sprintf "DROP INDEX %s_%s ON %s;" name sufix name)
+ else
+ (sprintf "DROP INDEX %s_%s;" name sufix);;
-let sprintf_refSort_index_drop name = [
-sprintf "DROP INDEX %s_index ON %s;" name name ]
+let sprintf_refObj_index_drop name dtype dbd= [(format_drop name "index" dtype dbd)]
-let sprintf_objectName_index_drop name = [
-sprintf "DROP INDEX %s_value ON %s;" name name]
+let sprintf_refSort_index_drop name dtype dbd = [(format_drop name "index" dtype dbd)]
-let sprintf_hits_index_drop name = [
-sprintf "DROP INDEX %s_source ON %s;" name name ;
-sprintf "DROP INDEX %s_no ON %s;" name name]
+let sprintf_objectName_index_drop name dtype dbd = [(format_drop name "value" dtype dbd)]
-let sprintf_count_index_drop name = [
-sprintf "DROP INDEX %s_source ON %s;" name name;
-sprintf "DROP INDEX %s_conclusion ON %s;" name name;
-sprintf "DROP INDEX %s_hypothesis ON %s;" name name;
-sprintf "DROP INDEX %s_statement ON %s;" name name]
+let sprintf_hits_index_drop name dtype dbd = [
+(format_drop name "source" dtype dbd);
+(format_drop name "no" dtype dbd)]
+
+let sprintf_count_index_drop name dtype dbd = [
+(format_drop name "source" dtype dbd);
+(format_drop name "conclusion" dtype dbd);
+(format_drop name "hypothesis" dtype dbd);
+(format_drop name "statement" dtype dbd)]
-let sprintf_refRel_index_drop name = [
-sprintf "DROP INDEX %s_index ON %s;" name name]
+let sprintf_refRel_index_drop name dtype dbd =
+ [(format_drop name "index" dtype dbd)]
let sprintf_rename_table oldname newname = [
sprintf "RENAME TABLE %s TO %s;" oldname newname
| `Hits -> sprintf_hits_drop named
| `Count -> sprintf_count_drop named
-let get_index_drop t named =
+let get_index_drop t named dtype dbd =
match t with
- | `RefObj -> sprintf_refObj_index_drop named
- | `RefSort -> sprintf_refSort_index_drop named
- | `RefRel -> sprintf_refRel_index_drop named
- | `ObjectName -> sprintf_objectName_index_drop named
- | `Hits -> sprintf_hits_index_drop named
- | `Count -> sprintf_count_index_drop named
+ | `RefObj -> sprintf_refObj_index_drop named dtype dbd
+ | `RefSort -> sprintf_refSort_index_drop named dtype dbd
+ | `RefRel -> sprintf_refRel_index_drop named dtype dbd
+ | `ObjectName -> sprintf_objectName_index_drop named dtype dbd
+ | `Hits -> sprintf_hits_index_drop named dtype dbd
+ | `Count -> sprintf_count_index_drop named dtype dbd
let create_tables l =
List.fold_left (fun s (name,table) -> s @ get_table_format table name) [] l
let drop_tables l =
List.fold_left (fun s (name,table) -> s @ get_table_drop table name) [] l
-let drop_indexes l =
- List.fold_left (fun s (name,table) -> s @ get_index_drop table name) [] l
+let drop_indexes l dtype dbd=
+ List.fold_left (fun s (name,table) -> s @ get_index_drop table name dtype dbd) [] l
let rename_tables l =
List.fold_left (fun s (o,n) -> s @ sprintf_rename_table o n) [] l
hits refObj ]
-let move_content (name1, tbl1) (name2, tbl2) buri =
+let move_content (name1, tbl1) (name2, tbl2) buri dtype dbd =
+ let escape s =
+ Pcre.replace ~pat:"([^\\\\])_" ~templ:"$1\\_" (HSql.escape dtype dbd s)
+ in
assert (tbl1 = tbl2);
sprintf
"INSERT INTRO %s SELECT * FROM %s WHERE source LIKE \"%s%%\";"
- name2 name1 (HMysql.escape buri)
+ name2 name1 (escape buri)
-let direct_deps refObj uri =
- sprintf "SELECT * FROM %s WHERE source = '%s';"
- (HMysql.escape refObj) (UriManager.string_of_uri uri)
+let direct_deps refObj uri dtype dbd =
+ sprintf "SELECT * FROM %s WHERE source = \"%s\";"
+ refObj (HSql.escape dtype dbd (UriManager.string_of_uri uri))
-let inverse_deps refObj uri =
- sprintf "SELECT * FROM %s WHERE h_occurrence = '%s';"
- (HMysql.escape refObj) (UriManager.string_of_uri uri)
+let inverse_deps refObj uri dtype dbd =
+ sprintf "SELECT * FROM %s WHERE h_occurrence = \"%s\";"
+ refObj (HSql.escape dtype dbd (UriManager.string_of_uri uri))