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