let sprintf_refRel_index name = [
sprintf "CREATE INDEX %s_index ON %s (source,h_position,h_depth);" name name]
-let format_drop name sufix =
- if HSql.isMysql then
+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_refObj_index_drop name = [(format_drop name "index")]
+let sprintf_refObj_index_drop name dtype dbd= [(format_drop name "index" dtype dbd)]
-let sprintf_refSort_index_drop name = [(format_drop name "index")]
+let sprintf_refSort_index_drop name dtype dbd = [(format_drop name "index" dtype dbd)]
-let sprintf_objectName_index_drop name = [(format_drop name "value")]
+let sprintf_objectName_index_drop name dtype dbd = [(format_drop name "value" dtype dbd)]
-let sprintf_hits_index_drop name = [
-(format_drop name "source");
-(format_drop name "no")]
+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 = [
-(format_drop name "source");
-(format_drop name "conclusion");
-(format_drop name "hypothesis");
-(format_drop name "statement")]
+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 = [(format_drop name "index")]
+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 (HSql.escape buri)
+ name2 name1 (escape buri)
-let direct_deps refObj uri =
+let direct_deps refObj uri dtype dbd =
sprintf "SELECT * FROM %s WHERE source = \"%s\";"
- (HSql.escape refObj) (UriManager.string_of_uri uri)
+ refObj (HSql.escape dtype dbd (UriManager.string_of_uri uri))
-let inverse_deps refObj uri =
+let inverse_deps refObj uri dtype dbd =
sprintf "SELECT * FROM %s WHERE h_occurrence = \"%s\";"
- (HSql.escape refObj) (UriManager.string_of_uri uri)
+ refObj (HSql.escape dtype dbd (UriManager.string_of_uri uri))