aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dml/ast.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dml/ast.ml')
-rw-r--r--lib/dml/ast.ml8
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]