X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2Fmqint.ml;h=bfe85f7eaaa53b6b8215a382ad65bdbd7fdef869;hb=5953b6e29b26a296d18dee9d453cec1255d65c1c;hp=84b3522f26ea49e324bee03f04a847935b613f11;hpb=a60d330dfaf77e399c8f0419f78aa4d1422cc367;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/mqint.ml b/helm/ocaml/mathql_interpreter/mqint.ml index 84b3522f2..bfe85f7ea 100644 --- a/helm/ocaml/mathql_interpreter/mqint.ml +++ b/helm/ocaml/mathql_interpreter/mqint.ml @@ -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 ();; -