(* contexts *****************************************************************)
type svar_context = (MathQL.svar * MathQL.resource_set) list
(* contexts *****************************************************************)
type svar_context = (MathQL.svar * MathQL.resource_set) list
- with Not_found -> warn (M.Subj (M.Dot i p)); [] end
- | M.Proj None x -> List.map (fun (r, _) -> r) (eval_query c x)
- | M.Proj (Some p) x ->
+ with Not_found -> warn (M.Subj (M.Dot (i,p))); [] end
+ | M.Proj (None,x) -> List.map (fun (r, _) -> r) (eval_query c x)
+ | M.Proj ((Some p),x) ->
let proj_group_aux (q, v) = if q = p then v else [] in
let proj_group a = U.iter proj_group_aux a in
let proj_set (_, g) = U.iter proj_group g in
U.iter proj_set (eval_query c x)
let proj_group_aux (q, v) = if q = p then v else [] in
let proj_group a = U.iter proj_group_aux a in
let proj_set (_, g) = U.iter proj_group g in
U.iter proj_set (eval_query c x)
C.log h (Printf.sprintf "Stat: %s,%i\n" s (List.length r));
r
| M.Count y -> [string_of_int (List.length (eval_val c y))]
C.log h (Printf.sprintf "Stat: %s,%i\n" s (List.length r));
r
| M.Count y -> [string_of_int (List.length (eval_val c y))]
and eval_query c = function
| M.Empty -> []
| M.Subj x ->
List.map (fun s -> (s, [])) (eval_val c x)
and eval_query c = function
| M.Empty -> []
| M.Subj x ->
List.map (fun s -> (s, [])) (eval_val c x)
C.log h (Printf.sprintf "Log source: %s\n" s);
eval_query c x
end else begin
let s = (eval_query c x) in
let t = P.start_time () in
C.log h (Printf.sprintf "Log source: %s\n" s);
eval_query c x
end else begin
let s = (eval_query c x) in
let t = P.start_time () in
let f = if b then U.mql_prod else U.set_union in
let g a s = (fst a, f (snd a) (eval_grp c z)) :: s in
List.fold_right g (eval_query c x) []
let f = if b then U.mql_prod else U.set_union in
let g a s = (fst a, f (snd a) (eval_grp c z)) :: s in
List.fold_right g (eval_query c x) []
- | M.Property q0 q1 q2 mc ct cfl el pat y ->
+ | M.Property (q0,q1,q2,mc,ct,cfl,el,pat,y) ->
let subj, mct =
if q0 then [], (pat, q2 @ mc, eval_val c y)
else (q2 @ mc), (pat, [], eval_val c y)
let subj, mct =
if q0 then [], (pat, q2 @ mc, eval_val c y)
else (q2 @ mc), (pat, [], eval_val c y)
let keep_path (p, v) t =
if List.mem p l = b then t else (p, v) :: t in
let keep_grp a = List.fold_right keep_path a [] in
let keep_path (p, v) t =
if List.mem p l = b then t else (p, v) :: t in
let keep_grp a = List.fold_right keep_path a [] in
C.log h (Printf.sprintf "MQIExecute: %s,%s\n" s
(C.string_of_flags (C.flags h)));
r
C.log h (Printf.sprintf "MQIExecute: %s,%s\n" s
(C.string_of_flags (C.flags h)));
r