diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/sublanguage.ml | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/lib/sublanguage.ml b/lib/sublanguage.ml index d92358e..4cfe913 100644 --- a/lib/sublanguage.ml +++ b/lib/sublanguage.ml @@ -1,24 +1,24 @@ +type cursor_result = { + cursor_id : string; + rows : Tuple.materialized list; + has_more : bool; +} (** Effect classification for sublanguage operations. Categorically: - Query: a natural transformation between instance functors (DRL). Side-effect-free; the database state is unchanged. - - Transition: a morphism in the category of database states (DDL, - DML, ICL, DCL, and future TCL). Produces a new state via - substitution (Harper, PFPL ch. 3-4). + - Transition: a morphism in the category of database states (DDL, DML, ICL, + DCL, and future TCL). Produces a new state via substitution (Harper, PFPL + ch. 3-4). Future sublanguages: - - TCL -> Transition (transaction boundaries are state morphisms - with atomicity constraints) + - TCL -> Transition (transaction boundaries are state morphisms with + atomicity constraints) - PPL -> new effect class: potentially non-terminating computation (Turing-complete; breaks the termination guarantee of DRL) - ACL -> a functor restriction: narrows the admissible natural transformations based on authorization context *) -type cursor_result = { - cursor_id : string; - rows : Tuple.materialized list; - has_more : bool; -} type result = | Query of Relation.t @@ -29,8 +29,12 @@ module type S = sig type storage type ast type error + val name : string val parse_sexp : Sexplib.Sexp.t -> (ast, error) Result.t - val execute : storage -> Management.Database.t -> ast -> (result, error) Result.t + + val execute : + storage -> Management.Database.t -> ast -> (result, error) Result.t + val sexp_of_error : error -> Sexplib.Sexp.t end |
