]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter/mqint.ml
the db connection parameters are now parametrized istead of hard-coded
[helm.git] / helm / ocaml / mathql_interpreter / mqint.ml
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 ();;
-