diff options
| author | Estevan Castilho <tevo@riajuu.net> | 2026-06-18 00:01:56 +0000 |
|---|---|---|
| committer | Estevan Castilho <tevo@riajuu.net> | 2026-06-18 00:01:56 +0000 |
| commit | c05b95d810277c999199c59a74fede8029e17d61 (patch) | |
| tree | cf885a64253f968472fde35b1d34c04828f7e46e /lib/drl/executor.ml | |
| parent | d4647a9d01589d0844f1632e5ed254c202d36a10 (diff) | |
| download | Sakura-more-planner-nodes.tar.gz Sakura-more-planner-nodes.zip | |
Order the clauses as defined, list unimplemented explicitlymore-planner-nodes
Diffstat (limited to '')
| -rw-r--r-- | lib/drl/executor.ml | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/lib/drl/executor.ml b/lib/drl/executor.ml index b634ba9..9e48021 100644 --- a/lib/drl/executor.ml +++ b/lib/drl/executor.ml @@ -19,27 +19,28 @@ module Make (NT : Nt.S) = struct | Ast.Base name -> let* fqn = Qualified_name.try_parse name in Ok (Nt.Scan { path = resolve fqn; args = [] }) + | Ast.Const _ -> + Error (Error.unsupported_operator + "Const: literal relations not yet reachable by VM; use Base") + | Ast.Select _ -> + Error (Error.unsupported_operator "Select unsupported") | Ast.Join (on_attrs, q1, q2) -> let* p1 = compile resolve q1 in let* p2 = compile resolve q2 in Ok (Nt.Join { left = p1; right = p2; on_attrs }) - | Ast.Take (n, q) -> - let* p = compile resolve q in - Ok (Nt.Take { limit = n; source = p }) - | Ast.Const _ -> - Error (Error.unsupported_operator - "Const: literal relations not yet reachable by VM; use Base") - | Ast.Project (attrs, query) -> - let* source = compile resolve query in - Ok (Nt.Project { attrs; source }) | Ast.Cartesian (q1, q2) -> let* p1 = compile resolve q1 in let* p2 = compile resolve q2 in - Ok (Nt.Join { left = p1; right = p2; []}) - | Ast.Rename _ -> Error (Error.unsupported_operator "TODO") - | _ -> - Error (Error.unsupported_operator - "Select/Union/Diff/Cartesian require VM operators not yet implemented") + Ok (Nt.Join { left = p1; right = p2; on_attrs = [] }) + | Ast.Project (attrs, query) -> + let* source = compile resolve query in + Ok (Nt.Project { attrs; source }) + | Ast.Rename _ -> Error (Error.unsupported_operator "Rename unsupported") + | Ast.Union _ -> Error (Error.unsupported_operator "Union unsupported") + | Ast.Diff _ -> Error (Error.unsupported_operator "Diff unsupported") + | Ast.Take (n, q) -> + let* p = compile resolve q in + Ok (Nt.Take { limit = n; source = p }) let page_limit = 16 |
