blob: 03e68ac52db3cebe86d38be20559efba8d24a3e2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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]
|