X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Focaml%2Fmetadata%2FmetadataDb.ml;h=c56a1a027d6fd900b7aa50c66fec3771cce5d14a;hb=e097097df79962ad19cc1c4b75e8814b41fa1c64;hp=df79118f2cb796dbc2233c9115c3b79e46ee3c9c;hpb=9eb303488eea42ec9cd1f588f49b293148878a37;p=helm.git diff --git a/helm/ocaml/metadata/metadataDb.ml b/helm/ocaml/metadata/metadataDb.ml index df79118f2..c56a1a027 100644 --- a/helm/ocaml/metadata/metadataDb.ml +++ b/helm/ocaml/metadata/metadataDb.ml @@ -28,24 +28,26 @@ open MetadataTypes open Printf let prepare_insert () = + (* let insert_owner a b = - sprintf "INSERT %s VALUES (\"%s\", \"%s\")" owners_tbl a b + sprintf "INSERT %s VALUES (\"%s\", \"%s\")" (owners_tbl ())a b in + *) let insert_sort a b c d = - sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d, \"%s\")" sort_tbl a b c d + sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d, \"%s\")" (sort_tbl ())a b c d in let insert_rel a b c = - sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d)" rel_tbl a b c + sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d)" (rel_tbl ()) a b c in let insert_obj a b c d = - sprintf "INSERT %s VALUES (\"%s\", \"%s\", \"%s\", %s)" obj_tbl a b c d + sprintf "INSERT %s VALUES (\"%s\", \"%s\", \"%s\", %s)" (obj_tbl ()) a b c d in - (insert_owner, insert_sort, insert_rel, insert_obj) + ((*insert_owner, *)insert_sort, insert_rel, insert_obj) -let execute_insert dbd (insert_owner, insert_sort, insert_rel, insert_obj) +let execute_insert dbd ((*insert_owner, *)insert_sort, insert_rel, insert_obj) uri owner (sort_cols, rel_cols, obj_cols) = - ignore (Mysql.exec dbd (insert_owner uri owner)); + (* ignore (Mysql.exec dbd (insert_owner uri owner)); *) List.iter (function | [`String a; `String b; `Int c; `String d] -> ignore (Mysql.exec dbd (insert_sort a b c d)) @@ -67,21 +69,21 @@ let execute_insert dbd (insert_owner, insert_sort, insert_rel, insert_obj) let insert_const_no dbd uri = let inconcl_no = sprintf "INSERT %s SELECT \"%s\", COUNT(DISTINCT h_occurrence) FROM %s WHERE (h_position=\"%s\" OR h_position=\"%s\") AND source LIKE \"%s%%\"" - conclno_tbl uri obj_tbl inconcl_pos mainconcl_pos uri + (conclno_tbl ()) uri (obj_tbl ()) inconcl_pos mainconcl_pos uri in let concl_hyp = sprintf "INSERT %s SELECT \"%s\",COUNT(DISTINCT h_occurrence) FROM %s WHERE NOT (h_position=\"%s\") AND (source = \"%s\")" - conclno_hyp_tbl uri obj_tbl inbody_pos uri + (conclno_hyp_tbl ()) uri (obj_tbl ()) inbody_pos uri in ignore (Mysql.exec dbd inconcl_no); ignore (Mysql.exec dbd concl_hyp) let insert_name ~dbd ~uri ~name = let query = - sprintf "INSERT %s VALUES (\"%s\", \"%s\")" name_tbl uri name + sprintf "INSERT %s VALUES (\"%s\", \"%s\")" (name_tbl ()) uri name in ignore (Mysql.exec dbd query) @@ -111,25 +113,41 @@ let index_inductive_def ~dbd = List.iter (insert_const_no dbd) uris; List.iter (fun (uri, name, _) -> insert_name ~dbd ~uri ~name) metadata -let clean ~(dbd:Mysql.dbd) ~owner = +let clean ~(dbd:Mysql.dbd) = let owned_uris = (* list of uris in list-of-columns format *) let query = - sprintf "SELECT source FROM %s WHERE owner = \"%s\"" owners_tbl owner + (* sprintf + * "SELECT source FROM %s WHERE owner = \"%s\"" (owners_tbl ()) + * owner*) + sprintf "SELECT source FROM %s" (obj_tbl ()) in let result = Mysql.exec dbd query in - Mysql.map result (fun cols -> + let uris = Mysql.map result (fun cols -> match cols.(0) with | Some src -> src - | None -> assert false) + | None -> assert false) in + (* and now some stuff to remove #xpointers and duplicates *) + let cleaned_uris = + List.map (fun x -> Str.replace_first (Str.regexp "\#.*$") "" x) uris + in + let sorted_uris = List.fast_sort Pervasives.compare cleaned_uris in + match sorted_uris with + | [] -> sorted_uris + | he::tl -> + (* no List.remove dups ?? *) + snd(List.fold_left (fun (last,l) cur -> if cur <> last then + (cur,cur::l) else (last,l)) (he,[he]) tl) in let del_from tbl = - let query s = sprintf "DELETE FROM %s WHERE source LIKE \"%s%%\"" tbl s in + let query s = + sprintf "DELETE FROM %s WHERE source LIKE \"%s%%\"" (tbl ()) s + in List.iter (fun source_col -> ignore (Mysql.exec dbd (query source_col))) owned_uris in List.iter del_from - [sort_tbl; rel_tbl; obj_tbl; conclno_tbl; conclno_hyp_tbl; name_tbl; - owners_tbl]; + [sort_tbl; rel_tbl; obj_tbl; conclno_tbl; conclno_hyp_tbl; name_tbl(*; + owners_tbl*)]; List.iter Http_getter.unregister owned_uris