X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Flibrary%2FlibraryDb.ml;h=e6af1eb814bf198e3f3d714eca0556450fbfdc63;hb=82d0bc4291648c88e9f248fc5a67518e938eacdf;hp=3ea0f481aacc6ecb6534cc896afa61b1bc310341;hpb=805aeafdb6b3ca42201ba08dea0f84d8b1adc489;p=helm.git diff --git a/helm/software/components/library/libraryDb.ml b/helm/software/components/library/libraryDb.ml index 3ea0f481a..e6af1eb81 100644 --- a/helm/software/components/library/libraryDb.ml +++ b/helm/software/components/library/libraryDb.ml @@ -29,7 +29,7 @@ open Printf ;; let instance = let dbd = lazy ( - HMysql.quick_connect + HSql.quick_connect ~host:(Helm_registry.get "db.host") ~user:(Helm_registry.get "db.user") ~database:(Helm_registry.get "db.database") @@ -58,9 +58,9 @@ let clean_owner_environment () = let owned_uris = try MetadataDb.clean ~dbd - with Mysql.Error _ as exn -> - match HMysql.errno dbd with - | Mysql.No_such_table -> [] + with (HSql.Error _) as exn -> + match HSql.errno dbd with + | HSql.No_such_table -> [] | _ -> raise exn in List.iter @@ -69,17 +69,19 @@ let clean_owner_environment () = List.iter (fun suffix -> try - HExtlib.safe_remove (Http_getter.resolve (uri ^ suffix)) + HExtlib.safe_remove + (Http_getter.resolve ~writable:true (uri ^ suffix)) with Http_getter_types.Key_not_found _ -> ()) [""; ".body"; ".types"]) owned_uris; List.iter (fun statement -> try - ignore (HMysql.exec dbd statement) - with Mysql.Error _ as exn -> - match HMysql.errno dbd with - | Mysql.Bad_table_error - | Mysql.No_such_index | Mysql.No_such_table -> () + ignore (HSql.exec dbd statement) + with (HSql.Error _) as exn -> + match HSql.errno dbd with + | HSql.No_such_table + | HSql.Bad_table_error + | HSql.No_such_index -> prerr_endline statement; () | _ -> raise exn ) statements; ;; @@ -112,15 +114,19 @@ let create_owner_environment () = in List.iter (fun statement -> try - ignore (HMysql.exec dbd statement) + ignore (HSql.exec dbd statement) with - exn -> - let status = HMysql.status dbd in - match status with - | Mysql.StatusError Mysql.Table_exists_error -> () - | Mysql.StatusError Mysql.Dup_keyname -> () - | Mysql.StatusError _ -> raise exn - | _ -> () + (HSql.Error _) as exc -> + let status = HSql.errno dbd in + match status with + | HSql.Table_exists_error -> () + | HSql.Dup_keyname -> () + | HSql.GENERIC_ERROR _ -> + prerr_endline statement; + raise exc + | _ -> () + + ) statements ;; @@ -141,39 +147,33 @@ let remove_uri uri = let dbd = instance () in let suri = UriManager.string_of_uri uri in - let query table suri = sprintf - "DELETE FROM %s WHERE source LIKE '%s%%'" table (HMysql.escape suri) + let query table suri = + if HSql.isMysql then + sprintf "DELETE QUICK LOW_PRIORITY FROM %s WHERE source='%s'" table (HSql.escape suri) + else sprintf "DELETE FROM %s WHERE source='%s'" table (HSql.escape suri) in List.iter (fun t -> try - ignore (HMysql.exec dbd (query t suri)) + ignore (HSql.exec dbd (query t suri)) with exn -> raise exn (* no errors should be accepted *) ) [obj_tbl;sort_tbl;rel_tbl;name_tbl;(*conclno_tbl;conclno_hyp_tbl*)count_tbl]; - (* and now the debug job *) - let dbg_q = - sprintf "SELECT source FROM %s WHERE h_occurrence LIKE '%s%%'" obj_tbl - (HMysql.escape suri) - in - try - let rc = HMysql.exec dbd dbg_q in - let l = ref [] in - HMysql.iter rc (fun a -> match a.(0) with None ->()|Some a -> l := a:: !l); - let l = List.sort Pervasives.compare !l in - HExtlib.list_uniq l - with - exn -> raise exn (* no errors should be accepted *) +;; let xpointers_of_ind uri = let dbd = instance () in let name_tbl = MetadataTypes.name_tbl () in + let escape s = + Pcre.replace ~pat:"([^\\\\])_" ~templ:"$1\\_" (HSql.escape s) + in let query = sprintf - "SELECT source FROM %s WHERE source LIKE '%s#xpointer%%'" name_tbl - (HMysql.escape (UriManager.string_of_uri uri)) + ("SELECT source FROM %s WHERE source LIKE '%s#xpointer%%' " + ^^ HSql.escape_string_for_like) + name_tbl (escape (UriManager.string_of_uri uri)) in - let rc = HMysql.exec dbd query in + let rc = HSql.exec dbd query in let l = ref [] in - HMysql.iter rc (fun a -> match a.(0) with None ->()|Some a -> l := a:: !l); + HSql.iter rc (fun a -> match a.(0) with None ->()|Some a -> l := a:: !l); List.map UriManager.uri_of_string !l