]> matita.cs.unibo.it Git - helm.git/commitdiff
the db connection parameters are now parametrized istead of hard-coded
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 8 Oct 2002 12:04:36 +0000 (12:04 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 8 Oct 2002 12:04:36 +0000 (12:04 +0000)
we use Sys.time () instead of Unix.time ()
Let-in for vvars fixed

12 files changed:
helm/ocaml/mathql_interpreter/dbconn.ml
helm/ocaml/mathql_interpreter/dbconn.mli
helm/ocaml/mathql_interpreter/diff.ml
helm/ocaml/mathql_interpreter/intersect.ml
helm/ocaml/mathql_interpreter/mqint.ml
helm/ocaml/mathql_interpreter/mqint.mli
helm/ocaml/mathql_interpreter/pattern.ml
helm/ocaml/mathql_interpreter/relation.ml
helm/ocaml/mathql_interpreter/select.ml
helm/ocaml/mathql_interpreter/sortedby.ml
helm/ocaml/mathql_interpreter/union.ml
helm/ocaml/mathql_interpreter/use.ml

index 17264f5cb17408e0526ec5f73e619965d04f2d16..b38eabe8712f71dcae52b59177ea7f1bc24c01e1 100644 (file)
  *)
 open MathQL;;
 
-exception DBInvalidURI of string
-exception DBConnectionFailed of string
-exception DBInvalidConnection of string
-
-
-
-(*
- * paramentri della connessione
- *
- * TODO: bisogna scegliere se questi parametri vengono
- * passati come argomento
- *)
-(*let connection_param = "dbname=helm";;*)
-let connection_param = "host=mowgli.cs.unibo.it dbname=helm user=helm";;
+exception InvalidURI of string
+exception ConnectionFailed of string
+exception InvalidConnection
 
 (*
  * connessione al db
  *)
-let conn = ref None;;
+let conn = ref None
 
 (*
  * controllo sulla connessione
  *)
 let pgc () =
    match !conn with
-      None -> raise (DBInvalidConnection connection_param)
+      None   -> raise InvalidConnection
     | Some c -> c
 ;;
 
@@ -68,12 +57,11 @@ let pgc () =
  * TODO
  * passare i parametri della connessione come argomento di init
  *)
-let init () =
+let init connection_param =
    try (
     conn := Some (new Postgres.connection connection_param);
-    prerr_endline "connected."
    ) with
-    _ -> raise (DBConnectionFailed ("init: " ^ connection_param))
+    _ -> raise (ConnectionFailed ("init: " ^ connection_param))
 ;;
 
 (*
index c162cf00e9eeed676204cf6a89f52ffb18108c07..ecfbcd66ae8c263d8457fa96247f30a504e30870 100644 (file)
@@ -24,5 +24,5 @@
  *)
 
 val pgc : unit -> Postgres.connection
-val init : unit -> unit
+val init : string -> unit
 val close : unit -> unit
index 28e874c865f200931a30cd1c4f016873fc65fcc6..b4e09196ee5c42e097cbc2c250f2db317d0f491b 100644 (file)
@@ -83,9 +83,9 @@ let rec diff_ex rs1 rs2 =
 
 
 let diff_ex l1 l2 =
- let before = Unix.time () in
+ let before = Sys.time () in
  let res = diff_ex l1 l2 in
- let after = Unix.time () in
+ let after = Sys.time () in
   let ll1 = string_of_int (List.length l1) in
   let ll2 = string_of_int (List.length l2) in
   let diff = string_of_float (after -. before) in
index 8a2f55ff224cec02d1392560c171af73eca81e9d..6503a39423579eab467ab080e2a45eef1d4dbfc4 100644 (file)
@@ -89,71 +89,3 @@ let intersect_ex rs1 rs2 =
   res
 ;;
 
-(*
-
-let intersect_ex l1 l2 =
- (* PRE-CLAUDIO
- (*let _ = print_string ("INTERSECT ")
- and t = Unix.time () in*)
- let result = 
-  match (l1, l2) with
-     ((head1::tail1), (head2::tail2)) ->
-      (match (head1, head2) with
-          ([], _) -> assert false (* gli header non devono mai essere vuoti *)
-       |  (_, []) -> assert false (* devono contenere almeno [retVal] *)
-       |  (_,  _) ->
-           (match (tail1, tail2) with
-               ([], _) -> [["retVal"]] (* se una delle due code e' vuota... *)
-            |  (_, []) -> [["retVal"]] (* ... l'intersezione e' vuota *)
-            |  (_,  _) ->
-                [head2 @
-                 (List.find_all
-                 (function t -> not (List.mem t head2))
-                 head1
-                )
-               ] (* header del risultato finale *)
-               @
-               intersect_tails (List.tl head1) tail1 (List.tl head2) tail2
-               (*
-               List.fold_left
-                 (fun par1 elem1 -> par1 @
-                  List.map
-                  (fun elem2 ->
-                   [(List.hd elem1)] @
-                   (xres_join_context (List.tl head1) (List.tl elem1)
-                                      (List.tl head2) (List.tl elem2)
-                    )
-                  )
-                   (List.find_all (* *)
-                    (fun elem2 ->    (* trova tutti gli elementi della lista tail2 *)
-                    ((List.hd elem1) = (List.hd elem2)) && (* che stanno in tail1 *)
-                    not ((xres_join_context (List.tl head1) (List.tl elem1)
-                                            (List.tl head2) (List.tl elem2)) = [])
-                    (* e per i quali la xres_join_context non sia vuota *)
-                   )
-                    tail2 (* List.find_all *)
-                  )
-                  )
-                []
-                tail1 (* per ogni elemento di tail1 applica la List.fold_left *)
-               *)
-           ) (* match *)
-      )
-  | _ -> []
-   in
-    (*let _ = print_endline (string_of_float (Unix.time () -. t)); flush stdout in*)
-    result*)
- let before = Sys.time () in
- let res = intersect_ex l1 l2 in
- let after = Sys.time () in
-  let ll1 = string_of_int (List.length l1) in
-  let ll2 = string_of_int (List.length l2) in
-  let diff = string_of_float (after -. before) in
-  print_endline
-   ("INTERSECT(" ^ ll1 ^ "," ^ ll2 ^ ") = " ^ string_of_int (List.length res) ^
-    ": " ^ diff ^ "s") ;
-  flush stdout ;
-  res
-;;
-
-*)
index 84b3522f26ea49e324bee03f04a847935b613f11..bfe85f7eaaa53b6b8215a382ad65bdbd7fdef869 100644 (file)
@@ -110,7 +110,7 @@ let rec execute_ex env =
      intersect_ex (execute_ex env l1) (execute_ex env l2)
  |  MQListRVar rvar -> [List.assoc rvar env]
  |  MQLetIn (lvar, l1, l2) ->
-     let t = Unix.time () in
+     let t = Sys.time () in
       let res =
        (*CSC: The interesting code *)
        let _ = letin_ex lvar (execute_ex env l1) in
@@ -119,7 +119,7 @@ let rec execute_ex env =
       in
        letdispose ();
        print_string ("LETIN = " ^ string_of_int (List.length res) ^ ": ") ;
-       print_endline (string_of_float (Unix.time () -. t) ^ "s") ;
+       print_endline (string_of_float (Sys.time () -. t) ^ "s") ;
        flush stdout ;
        res
  |  MQListLVar lvar ->
@@ -151,7 +151,7 @@ Select.execute := execute_ex;;
  * sono associati anche i valori delle variabili che ancora non sono state valutate
  * perche', ad esempio, si trovano in altri rami dell'albero.
  *
- * Esempio:
+* Esempio:
  * SELECT x IN USE PATTERN "cic:/**.con" POSITION $a WHERE $a IS MainConclusion
  * L'albero corrispondente a questa query e':
  *
@@ -236,7 +236,7 @@ let prop_pool = ref None;;
 
 *****************************************************************************)
 
-let init () = Dbconn.init () 
+let init connection_param = Dbconn.init connection_param 
 (*
    let c = pgc () in
    let res = 
@@ -269,8 +269,13 @@ let rec exec_set_exp c = function
    | MathQL.Union (sexp1, sexp2) -> union_ex (exec_set_exp c sexp1) (exec_set_exp c sexp2)
    | MathQL.LetSVar (svar, sexp1, sexp2) -> let _ = (svar, (exec_set_exp c sexp1)):: (List.remove_assoc svar c.svars) 
                                        in (exec_set_exp c sexp2)
-   | MathQL.LetVVar (vvar, vexp, sexp) -> let _ = (vvar, (exec_val_exp c vexp)):: (List.remove_assoc vvar c.vvars)
-                                       in (exec_set_exp c sexp)
+   | MathQL.LetVVar (vvar, vexp, sexp) ->
+        let before = Sys.time () in
+       let c1 = upd_vvars c ((vvar, exec_val_exp c vexp) :: c.vvars) in
+       let res = exec_set_exp c1 sexp in
+       print_string ("LETIN " ^ vvar ^ " = " ^ string_of_int (List.length res) ^ ": ") ;
+        print_endline (string_of_float (Sys.time () -. before) ^ "s") ;
+        flush stdout ; res
    | MathQL.Relation (rop, path, sexp, attl) -> relation_ex rop path (exec_set_exp c sexp) attl
    | MathQL.Select (rvar, sexp, bexp) -> let rset = (exec_set_exp c sexp) in
                                           let rec select_ex rset =
@@ -345,12 +350,3 @@ and exec_val_exp c = function
 
 and execute x =
    exec_set_exp {svars = []; rvars = []; groups = []; vvars = []} x 
-
-
-
-
-(*
- * chiusura della connessione al database
-  *)
-  let close () = Dbconn.close ();;
-
index d86772622fad718ca2e0f247c0274d47b0e0f88a..d7dcf9ebcd2f35e23f1d517f3a715d8c294ee176 100644 (file)
@@ -23,7 +23,7 @@
  * http://cs.unibo.it/helm/.
  *)
 
-val init    : unit -> unit                  (* open database *)
+val init    : string -> unit                (* open database *)
 
 val execute : MathQL.query -> MathQL.result (* execute query *)
 
index 576226008de0a5463c861cd6a076a72ee2723368..993617bb8b3998b8d780ed5b695705671cf47852 100644 (file)
@@ -35,7 +35,7 @@ open Mathql_semantics;;
 let pattern_ex (apreamble, apattern, afragid) =
  let c = pgc () in
   (*let _ = print_string ("USE ")
-  and t = Unix.time () in*)
+  and t = Sys.time () in*)
   (*let r1 = helm_class_id "MathResource" in*)
    (*let qq = "select att0 from t" ^ r1 ^ " where att0 " ^ (pattern_match apreamble apattern afragid) ^ " order by t" ^ r1 ^ ".att0 asc" in*)
    (*PRE-CLAUDIO
@@ -52,7 +52,7 @@ print_endline qq ; flush stderr ;
      c#exec (qq)
     in
 (* PRE-CLAUDIO
-     (*let _ = print_endline (string_of_float (Unix.time () -. t)); flush stdout in*)
+     (*let _ = print_endline (string_of_float (Sys.time () -. t)); flush stdout in*)
       result*)
      List.map
       (function uri -> {uri = uri ; attributes = [] ; extra = ""})
index 2fbb24bf80f421b4ba1bf8f83f635816da2efef4..4776e694c76f3a7610cdbdbb329818df76dbf680 100644 (file)
@@ -50,7 +50,7 @@ let vvar = if attl = [] then "position"
 in        
 (*let (uril,atts) = List.split rset in*)
 let _ = print_string ("RELATION "^usek)
-and t = Unix.time () in
+and t = Sys.time () in
 let result =
  let c = pgc () in
 
@@ -79,7 +79,7 @@ in
 
 in
 print_string (" = " ^ string_of_int (List.length result) ^ ": ") ; 
-print_endline (string_of_float (Unix.time () -. t) ^ "s") ;
+print_endline (string_of_float (Sys.time () -. t) ^ "s") ;
 flush stdout ;
    result
 ;;
index 960a0a2ba977d91911654a23e92ea2cf81871b20..ee9f329ba36ec61971784eb3f2ab6d9b1f876b22 100644 (file)
@@ -139,12 +139,12 @@ let rec is_good env =
  *)
 let select_ex env avar alist abool =
  let _ = print_string ("SELECT = ")
- and t = Unix.time () in
+ and t = Sys.time () in
   let result = 
    List.filter (function entry -> is_good ((avar,entry)::env) abool) alist
   in
    print_string (string_of_int (List.length result) ^ ": ") ;
-   print_endline (string_of_float (Unix.time () -. t) ^ "s") ;
+   print_endline (string_of_float (Sys.time () -. t) ^ "s") ;
    flush stdout ;
    result
 ;; *)
index 177cf3c034369c70f4c2d819d0ccf91deb4b8a9c..b9a05a00274e8846418be32c44c8f2f4b5f52837 100644 (file)
@@ -35,7 +35,7 @@ open Utility;;
  * implementazione del comando SORTEDBY
  *)
 let sortedby_ex alist order afunc =
- let before = Unix.time () in
+ let before = Sys.time () in
   let res = 
    let module S = Mathql_semantics in
     (Sort.list
@@ -50,7 +50,7 @@ let sortedby_ex alist order afunc =
      )
     )
   in
-   let after = Unix.time ()
+   let after = Sys.time ()
    and ll1 = string_of_int (List.length alist) in
     let diff = string_of_float (after -. before) in
      print_endline
index a02fbd0f5f417a054a9dbf07961f3ab3b828763f..35999170c830cd9cc073a2d9af32660fbc269b7f 100644 (file)
@@ -128,9 +128,9 @@ let rec union_ex rs1 rs2 =
 ;;
 
 let union_ex l1 l2 =
- let before = Unix.time () in
+ let before = Sys.time () in
  let res = union_ex l1 l2 in
- let after = Unix.time () in
+ let after = Sys.time () in
   let ll1 = string_of_int (List.length l1) in
   let ll2 = string_of_int (List.length l2) in
   let diff = string_of_float (after -. before) in
index 654c3e69b16e046a4836f2630f18dfded67589d2..f5648cab1763c4ee957f9eb450c486d0c5130227 100644 (file)
@@ -55,7 +55,7 @@ let relation_ex rop path rset attl =
  let usek = get_prop_id (List.hd path) in 
 
 let _ = print_string ("RELATION "^usek)
-and t = Unix.time () in
+and t = Sys.time () in
 let result =
  let c = pgc () in
   Sort.list
@@ -83,7 +83,7 @@ let result =
    )
 in
 print_string (" = " ^ string_of_int (List.length result) ^ ": ") ; 
-print_endline (string_of_float (Unix.time () -. t) ^ "s") ;
+print_endline (string_of_float (Sys.time () -. t) ^ "s") ;
 flush stdout ;
    result
 ;;