and other minor code improvements
vvars: vvar_context (* contesto delle vvar introdotte con let-in *)
}
vvars: vvar_context (* contesto delle vvar introdotte con let-in *)
}
-let upd_svars c s =
- {svars = s; rvars = c.rvars; groups = c.groups; vvars = c.vvars}
+let upd_svars c s = {c with svars = s}
-let upd_rvars c s =
- {svars = c.svars; rvars = s; groups = c.groups; vvars = c.vvars}
+let upd_rvars c s = {c with rvars = s}
-let upd_groups c s =
- {svars = c.svars; rvars = c.rvars; groups = s; vvars = c.vvars}
+let upd_groups c s = {c with groups = s}
-let upd_vvars c s =
- {svars = c.svars; rvars = c.rvars; groups = c.groups; vvars = s}
-
-
+let upd_vvars c s = {c with vvars = s}
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
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
("DIFF(" ^ ll1 ^ ", " ^ ll2 ^ ") = " ^ string_of_int (List.length res) ^
": " ^ diff ^ "s") ;
flush stdout ;
("DIFF(" ^ ll1 ^ ", " ^ ll2 ^ ") = " ^ string_of_int (List.length res) ^
": " ^ diff ^ "s") ;
flush stdout ;
let ll2 = string_of_int (List.length rs2) in
let diff = string_of_float (after -. before) in
if !stat then
let ll2 = string_of_int (List.length rs2) in
let diff = string_of_float (after -. before) in
if !stat then
- (print_endline("INTERSECT(" ^ ll1 ^ "," ^ ll2 ^ ") = " ^ string_of_int (List.length res) ^
+ (prerr_endline("INTERSECT(" ^ ll1 ^ "," ^ ll2 ^ ") = " ^ string_of_int (List.length res) ^
": " ^ diff ^ "s");
flush stdout);
res
": " ^ diff ^ "s");
flush stdout);
res
let after = Sys.time() in
let diff = string_of_float (after -. before) in
if !stat then
let after = Sys.time() in
let diff = string_of_float (after -. before) in
if !stat then
- (print_endline ("UNION: " ^ diff ^ "s");
+ (prerr_endline ("UNION: " ^ diff ^ "s");
flush stdout);
res
| MathQL.LetSVar (svar, sexp1, sexp2) ->
flush stdout);
res
| MathQL.LetSVar (svar, sexp1, sexp2) ->
let c1 = upd_svars c ((svar, exec_set_exp c sexp1) :: c.svars) in
let res = exec_set_exp c1 sexp2 in
if ! stat then
let c1 = upd_svars c ((svar, exec_set_exp c sexp1) :: c.svars) in
let res = exec_set_exp c1 sexp2 in
if ! stat then
- (print_string ("LETIN " ^ svar ^ " = " ^ string_of_int (List.length res) ^ ": ");
- print_endline (string_of_float (Sys.time() -. before) ^ "s");
+ (prerr_string ("LETIN " ^ svar ^ " = " ^ string_of_int (List.length res) ^ ": ");
+ prerr_endline (string_of_float (Sys.time() -. before) ^ "s");
flush stdout);
res
| MathQL.LetVVar (vvar, vexp, sexp) ->
flush stdout);
res
| MathQL.LetVVar (vvar, vexp, sexp) ->
let c1 = upd_vvars c ((vvar, exec_val_exp c vexp) :: c.vvars) in
let res = exec_set_exp c1 sexp in
if ! stat then
let c1 = upd_vvars c ((vvar, exec_val_exp c vexp) :: c.vvars) in
let res = exec_set_exp c1 sexp in
if ! stat then
- (print_string ("LETIN " ^ vvar ^ " = " ^ string_of_int (List.length res) ^ ": ");
- print_endline (string_of_float (Sys.time() -. before) ^ "s");
+ (prerr_string ("LETIN " ^ vvar ^ " = " ^ string_of_int (List.length res) ^ ": ");
+ prerr_endline (string_of_float (Sys.time() -. before) ^ "s");
flush stdout);
res
| MathQL.Relation (inv, rop, path, sexp, assl) ->
flush stdout);
res
| MathQL.Relation (inv, rop, path, sexp, assl) ->
if ! dbname = postgres_db then
(let res = relation_ex inv rop path (exec_set_exp c sexp) assl in
if ! stat then
if ! dbname = postgres_db then
(let res = relation_ex inv rop path (exec_set_exp c sexp) assl in
if ! stat then
- (print_string ("RELATION " ^ (fst path) ^ " = " ^ string_of_int(List.length res) ^ ": ");
- print_endline (string_of_float (Sys.time() -. before) ^ "s");
+ (prerr_string ("RELATION " ^ (fst path) ^ " = " ^ string_of_int(List.length res) ^ ": ");
+ prerr_endline (string_of_float (Sys.time() -. before) ^ "s");
flush stdout);
res)
else
(let res = relation_galax_ex inv rop path (exec_set_exp c sexp) assl in
if !stat then
flush stdout);
res)
else
(let res = relation_galax_ex inv rop path (exec_set_exp c sexp) assl in
if !stat then
- (print_string ("RELATION-GALAX " ^ (fst path) ^ " = " ^ string_of_int(List.length res) ^ ": ");
- print_endline (string_of_float (Sys.time() -. before) ^ "s");
+ (prerr_string ("RELATION-GALAX " ^ (fst path) ^ " = " ^ string_of_int(List.length res) ^ ": ");
+ prerr_endline (string_of_float (Sys.time() -. before) ^ "s");
| MathQL.Select (rvar, sexp, bexp) ->
let before = Sys.time() in
let rset = (exec_set_exp c sexp) in
| MathQL.Select (rvar, sexp, bexp) ->
let before = Sys.time() in
let rset = (exec_set_exp c sexp) in
- let rec select_ex rset =
- match rset with
- [] -> []
- | r::tl -> let c1 = upd_rvars c ((rvar,r)::c.rvars) in
- if (exec_boole_exp c1 bexp) then r::(select_ex tl)
- else select_ex tl
+ let rec select_ex =
+ function
+ [] -> []
+ | r::tl ->
+ let c1 = upd_rvars c ((rvar,r)::c.rvars) in
+ if (exec_boole_exp c1 bexp) then
+ r::(select_ex tl)
+ else
+ select_ex tl
in
let res = select_ex rset in
if ! stat then
in
let res = select_ex rset in
if ! stat then
- (print_string ("SELECT " ^ rvar ^ " = " ^ string_of_int (List.length res) ^ ": ");
- print_endline (string_of_float (Sys.time() -. before) ^ "s");
+ (prerr_string ("SELECT " ^ rvar ^ " = " ^ string_of_int (List.length res) ^ ": ");
+ prerr_endline (string_of_float (Sys.time() -. before) ^ "s");
flush stdout);
res
| MathQL.Diff (sexp1, sexp2) -> diff_ex (exec_set_exp c sexp1) (exec_set_exp c sexp2)
flush stdout);
res
| MathQL.Diff (sexp1, sexp2) -> diff_ex (exec_set_exp c sexp1) (exec_set_exp c sexp2)
meet_ex (exec_val_exp c vexp1) (exec_val_exp c vexp2)
| MathQL.Eq (vexp1, vexp2) -> (exec_val_exp c vexp1) = (exec_val_exp c vexp2)
| MathQL.Ex l bexp ->
meet_ex (exec_val_exp c vexp1) (exec_val_exp c vexp2)
| MathQL.Eq (vexp1, vexp2) -> (exec_val_exp c vexp1) = (exec_val_exp c vexp2)
| MathQL.Ex l bexp ->
- if l = [] then (exec_boole_exp c bexp) else
+ if l = [] then
+ (exec_boole_exp c bexp)
+ else
let latt =
List.map
(fun uri ->
let latt =
List.map
(fun uri ->
in
let ul1 = set_of_result (None,!execute env q1) in
let ul2 = set_of_result (None,!execute env q2) in
in
let ul1 = set_of_result (None,!execute env q1) in
let ul2 = set_of_result (None,!execute env q2) in
- print_endline ("MQSETEQUAL(" ^
+ prerr_endline ("MQSETEQUAL(" ^
string_of_int (List.length (!execute env q1)) ^ ">" ^
string_of_int (List.length ul1) ^ "," ^
string_of_int (List.length (!execute env q2)) ^ ">" ^
string_of_int (List.length (!execute env q1)) ^ ">" ^
string_of_int (List.length ul1) ^ "," ^
string_of_int (List.length (!execute env q2)) ^ ">" ^
in
let ul1 = set_of_result (None,!execute env q1) in
let ul2 = set_of_result (None,!execute env q2) in
in
let ul1 = set_of_result (None,!execute env q1) in
let ul2 = set_of_result (None,!execute env q2) in
- print_endline ("MQSUBSET(" ^
+ prerr_endline ("MQSUBSET(" ^
string_of_int (List.length (!execute env q1)) ^ ">" ^
string_of_int (List.length ul1) ^ "," ^
string_of_int (List.length (!execute env q2)) ^ ">" ^
string_of_int (List.length (!execute env q1)) ^ ">" ^
string_of_int (List.length ul1) ^ "," ^
string_of_int (List.length (!execute env q2)) ^ ">" ^
* implementazione del comando SELECT
*)
let select_ex env avar alist abool =
* implementazione del comando SELECT
*)
let select_ex env avar alist abool =
- let _ = print_string ("SELECT = ")
+ let _ = prerr_string ("SELECT = ")
and t = Sys.time () in
let result =
List.filter (function entry -> is_good ((avar,entry)::env) abool) alist
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 (Sys.time () -. t) ^ "s") ;
+ prerr_string (string_of_int (List.length result) ^ ": ") ;
+ prerr_endline (string_of_float (Sys.time () -. t) ^ "s") ;
flush stdout ;
result
;; *)
flush stdout ;
result
;; *)
let ns = pgresult_to_string (c#exec q1) in
let q2 = ("select att0 from property where att2='" ^ p ^ "' and att1=" ^ ns) in
let retval = pgresult_to_string (c#exec q2) in
let ns = pgresult_to_string (c#exec q1) in
let q2 = ("select att0 from property where att2='" ^ p ^ "' and att1=" ^ ns) in
let retval = pgresult_to_string (c#exec q2) in
- (*let _ = print_endline ("utility:q2: " ^ q2 ^ " : " ^ retval) in*)
+ (*let _ = prerr_endline ("utility:q2: " ^ q2 ^ " : " ^ retval) in*)