X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=components%2Fmetadata%2FmetadataDb.ml;h=844a083474fb72af086c8c09c46c60477ada14c9;hb=b44a732a930584aa08f4a78371dd9ac5b405f31e;hp=7678cd0b3109abde2204a8daf823a84d1bfca98c;hpb=748a6a2ba28c43e128759efbcc04919420e38cc1;p=helm.git diff --git a/components/metadata/metadataDb.ml b/components/metadata/metadataDb.ml index 7678cd0b3..844a08347 100644 --- a/components/metadata/metadataDb.ml +++ b/components/metadata/metadataDb.ml @@ -29,8 +29,8 @@ open MetadataTypes open Printf -let format_insert tbl tuples = - if HSql.isMysql then +let format_insert dbtype dbd tbl tuples = + if HSql.isMysql dbtype dbd then [sprintf "INSERT %s VALUES %s;" tbl (String.concat "," tuples)] else List.map (fun tup -> @@ -60,26 +60,29 @@ let execute_insert dbd uri (sort_cols, rel_cols, obj_cols) = | _ -> assert false) [] obj_cols in + let dbtype = + if Helm_registry.get_bool "matita.system" then HSql.Library else HSql.User + in if sort_tuples <> [] then begin let query_sort = - format_insert(sort_tbl ()) sort_tuples + format_insert dbtype dbd (sort_tbl ()) sort_tuples in - List.iter (fun query -> ignore (HSql.exec dbd query)) query_sort + List.iter (fun query -> ignore (HSql.exec dbtype dbd query)) query_sort end; if rel_tuples <> [] then begin let query_rel = - format_insert(rel_tbl ()) rel_tuples + format_insert dbtype dbd (rel_tbl ()) rel_tuples in - List.iter (fun query -> ignore (HSql.exec dbd query)) query_rel + List.iter (fun query -> ignore (HSql.exec dbtype dbd query)) query_rel end; if obj_tuples <> [] then begin let query_obj = - format_insert(obj_tbl ()) obj_tuples + format_insert dbtype dbd (obj_tbl ()) obj_tuples in - List.iter (fun query -> ignore (HSql.exec dbd query)) query_obj + List.iter (fun query -> ignore (HSql.exec dbtype dbd query)) query_obj end @@ -116,21 +119,27 @@ let insert_const_no ~dbd l = (sprintf "(\"%s\", %d, %d, %d)" (UriManager.string_of_uri uri) no_concl no_hyp no_full) :: acc ) [] l in + let dbtype = + if Helm_registry.get_bool "matita.system" then HSql.Library else HSql.User + in let insert = - format_insert(count_tbl ()) data + format_insert dbtype dbd (count_tbl ()) data in - List.iter (fun query -> ignore (HSql.exec dbd query)) insert + List.iter (fun query -> ignore (HSql.exec dbtype dbd query)) insert let insert_name ~dbd l = + let dbtype = + if Helm_registry.get_bool "matita.system" then HSql.Library else HSql.User + in let data = List.fold_left (fun acc (uri,name,_) -> (sprintf "(\"%s\", \"%s\")" (UriManager.string_of_uri uri) name) :: acc ) [] l in let insert = - format_insert(name_tbl ()) data + format_insert dbtype dbd (name_tbl ()) data in - List.iter (fun query -> ignore (HSql.exec dbd query)) insert + List.iter (fun query -> ignore (HSql.exec dbtype dbd query)) insert type columns = MetadataPp.t list list * MetadataPp.t list list * MetadataPp.t list list @@ -143,11 +152,11 @@ let analyze_index = ref 0 let eventually_analyze dbd = incr analyze_index; if !analyze_index > 30 then - if HSql.isMysql then + if HSql.isMysql HSql.User dbd then begin let analyze t = "OPTIMIZE TABLE " ^ t ^ ";" in List.iter - (fun table -> ignore (HSql.exec dbd (analyze table))) + (fun table -> ignore (HSql.exec HSql.User dbd (analyze table))) [name_tbl (); rel_tbl (); sort_tbl (); obj_tbl(); count_tbl()] end @@ -171,7 +180,7 @@ let tables_to_clean = let clean ~(dbd:HSql.dbd) = let owned_uris = (* list of uris in list-of-columns format *) let query = sprintf "SELECT source FROM %s" (name_tbl ()) in - let result = HSql.exec dbd query in + let result = HSql.exec HSql.User dbd query in let uris = HSql.map result (fun cols -> match cols.(0) with | Some src -> src @@ -181,16 +190,16 @@ let clean ~(dbd:HSql.dbd) = in let del_from tbl = let escape s = - Pcre.replace ~pat:"([^\\\\])_" ~templ:"$1\\_" (HSql.escape s) + Pcre.replace ~pat:"([^\\\\])_" ~templ:"$1\\_" (HSql.escape HSql.User dbd s) in let query s = sprintf ("DELETE FROM %s WHERE source LIKE \"%s%%\" " ^^ - HSql.escape_string_for_like) + HSql.escape_string_for_like HSql.User dbd) (tbl ()) (escape s) in List.iter - (fun source_col -> ignore (HSql.exec dbd (query source_col))) + (fun source_col -> ignore (HSql.exec HSql.User dbd (query source_col))) owned_uris in List.iter del_from tables_to_clean; @@ -200,15 +209,16 @@ let unindex ~dbd ~uri = let uri = UriManager.string_of_uri uri in let del_from tbl = let escape s = - Pcre.replace ~pat:"([^\\\\])_" ~templ:"$1\\_" (HSql.escape s) + Pcre.replace + ~pat:"([^\\\\])_" ~templ:"$1\\_" (HSql.escape HSql.User dbd s) in let query tbl = sprintf ("DELETE FROM %s WHERE source LIKE \"%s%%\" " ^^ - HSql.escape_string_for_like) + HSql.escape_string_for_like HSql.User dbd) (tbl ()) (escape uri) in - ignore (HSql.exec dbd (query tbl)) + ignore (HSql.exec HSql.User dbd (query tbl)) in List.iter del_from tables_to_clean