X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=components%2Fmetadata%2FmetadataDb.ml;h=6358df5b04718f634defe679c0af44cb8cfcc04d;hb=ce5018fb3004d79fd16301dfc0fd9370d59ba4fc;hp=457545deeb6e8f25826e29e3cf9b487f520d0b61;hpb=7f2444c2670cadafddd8785b687ef312158376b0;p=helm.git diff --git a/components/metadata/metadataDb.ml b/components/metadata/metadataDb.ml index 457545dee..6358df5b0 100644 --- a/components/metadata/metadataDb.ml +++ b/components/metadata/metadataDb.ml @@ -29,6 +29,14 @@ open MetadataTypes open Printf +let format_insert tbl tuples = + if HSql.isMysql then + [sprintf "INSERT %s VALUES %s;" tbl (String.concat "," tuples)] + else + List.map (fun tup -> + sprintf "INSERT INTO %s VALUES %s;" tbl tup) tuples +;; + let execute_insert dbd uri (sort_cols, rel_cols, obj_cols) = let sort_tuples = List.fold_left (fun s l -> match l with @@ -55,23 +63,23 @@ let execute_insert dbd uri (sort_cols, rel_cols, obj_cols) = if sort_tuples <> [] then begin let query_sort = - sprintf "INSERT %s VALUES %s;" (sort_tbl ()) (String.concat "," sort_tuples) + format_insert(sort_tbl ()) sort_tuples in - ignore (HMysql.exec dbd query_sort) + List.iter (fun query -> ignore (HSql.exec dbd query)) query_sort end; if rel_tuples <> [] then begin let query_rel = - sprintf "INSERT %s VALUES %s;" (rel_tbl ()) (String.concat "," rel_tuples) + format_insert(rel_tbl ()) rel_tuples in - ignore (HMysql.exec dbd query_rel) + List.iter (fun query -> ignore (HSql.exec dbd query)) query_rel end; if obj_tuples <> [] then begin let query_obj = - sprintf "INSERT %s VALUES %s;" (obj_tbl ()) (String.concat "," obj_tuples) + format_insert(obj_tbl ()) obj_tuples in - ignore (HMysql.exec dbd query_obj) + List.iter (fun query -> ignore (HSql.exec dbd query)) query_obj end @@ -109,9 +117,9 @@ let insert_const_no ~dbd l = (UriManager.string_of_uri uri) no_concl no_hyp no_full) :: acc ) [] l in let insert = - sprintf "INSERT INTO %s VALUES %s" (count_tbl ()) (String.concat "," data) + format_insert(count_tbl ()) data in - ignore (HMysql.exec dbd insert) + List.iter (fun query -> ignore (HSql.exec dbd query)) insert let insert_name ~dbd l = let data = @@ -120,9 +128,9 @@ let insert_name ~dbd l = (sprintf "(\"%s\", \"%s\")" (UriManager.string_of_uri uri) name) :: acc ) [] l in let insert = - sprintf "INSERT INTO %s VALUES %s" (name_tbl ()) (String.concat "," data) + format_insert(name_tbl ()) data in - ignore (HMysql.exec dbd insert) + List.iter (fun query -> ignore (HSql.exec dbd query)) insert type columns = MetadataPp.t list list * MetadataPp.t list list * MetadataPp.t list list @@ -135,10 +143,11 @@ let analyze_index = ref 0 let eventually_analyze dbd = incr analyze_index; if !analyze_index > 30 then + if HSql.isMysql then begin let analyze t = "OPTIMIZE TABLE " ^ t ^ ";" in List.iter - (fun table -> ignore (HMysql.exec dbd (analyze table))) + (fun table -> ignore (HSql.exec dbd (analyze table))) [name_tbl (); rel_tbl (); sort_tbl (); obj_tbl(); count_tbl()] end @@ -159,11 +168,11 @@ let index_obj ~dbd ~uri = let tables_to_clean = [sort_tbl; rel_tbl; obj_tbl; name_tbl; count_tbl] -let clean ~(dbd:HMysql.dbd) = +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 = HMysql.exec dbd query in - let uris = HMysql.map result (fun cols -> + let result = HSql.exec dbd query in + let uris = HSql.map result (fun cols -> match cols.(0) with | Some src -> src | None -> assert false) in @@ -175,7 +184,7 @@ let clean ~(dbd:HMysql.dbd) = sprintf "DELETE FROM %s WHERE source LIKE \"%s%%\"" (tbl ()) s in List.iter - (fun source_col -> ignore (HMysql.exec dbd (query source_col))) + (fun source_col -> ignore (HSql.exec dbd (query source_col))) owned_uris in List.iter del_from tables_to_clean; @@ -187,7 +196,7 @@ let unindex ~dbd ~uri = let query tbl = sprintf "DELETE FROM %s WHERE source LIKE \"%s%%\"" (tbl ()) uri in - ignore (HMysql.exec dbd (query tbl)) + ignore (HSql.exec dbd (query tbl)) in List.iter del_from tables_to_clean