diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-06-22 22:55:27 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-22 22:55:27 -0300 |
| commit | b81586ee4a0543a5f9866586c78dccdd6328934a (patch) | |
| tree | 4cd2f26e8e57e7e8d852fb7deddd0818c482dc8b /lib/dml/ast.ml | |
| parent | 57b55b51ee6a1d4678ba37e4631d61a248411ff2 (diff) | |
| download | Sakura-b81586ee4a0543a5f9866586c78dccdd6328934a.tar.gz Sakura-b81586ee4a0543a5f9866586c78dccdd6328934a.zip | |
RNT ephemeral relations representation
Diffstat (limited to '')
| -rw-r--r-- | lib/dml/ast.ml | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/dml/ast.ml b/lib/dml/ast.ml index d8defe6..03e68ac 100644 --- a/lib/dml/ast.ml +++ b/lib/dml/ast.ml @@ -9,4 +9,12 @@ type statement = | Assign of { target : string; body : Drl.Ast.query } | InsertFrom of { target : string; source : Drl.Ast.query } | DeleteWhere of { target : string; predicate : Drl.Ast.query } + (** Binds an unqualified name to a session-scoped ephemeral relation. + The body is recomputed on each scan and never materialized; + the binding lives until [DropDefine] or a session close. + In contrast, [Assign] drains the body into an existing + stored relation. *) + | Define of { target : string; body : Drl.Ast.query } + (** Drops a [Define] binding, releasing its session-ownership pin. *) + | DropDefine of { target : string } [@@deriving sexp] |
