diff options
Diffstat (limited to 'lib/dml/ast.ml')
| -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] |
