blob: e34adb9c3cf44e07b8e1f2849d6ec7010ee891ef (
plain) (
tree)
|
|
open Sexplib.Std
type attr_value = string * Drl.Ast.value [@@deriving sexp]
type statement =
| InsertTuple of {relation: string; attributes: attr_value list}
| InsertTuples of {relation: string; tuples: attr_value list list}
| DeleteTuple of {relation: string; attributes: attr_value list}
| 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]
|