summaryrefslogtreecommitdiff
path: root/src/sql.sig
diff options
context:
space:
mode:
authorGravatar Ziv Scully <ziv@mit.edu>2014-05-27 21:14:13 -0400
committerGravatar Ziv Scully <ziv@mit.edu>2014-05-27 21:14:13 -0400
commitb1516ed386ca303a526959586f0a06564ca77bb0 (patch)
treed37d80752e5a132615064d4b1e991dcb8ef35793 /src/sql.sig
parent93d6de491838eb3607a12686bfdc250366aa60e4 (diff)
Finishes initial prototype, caching parameterless pages with table-match-based invalidation. Still has problems parsing non-Postgres SQL dialects properly.
Diffstat (limited to 'src/sql.sig')
-rw-r--r--src/sql.sig22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/sql.sig b/src/sql.sig
index 540844c3..573a8baf 100644
--- a/src/sql.sig
+++ b/src/sql.sig
@@ -1,10 +1,8 @@
signature SQL = sig
-val fu : Mono.file -> unit
-
val debug : bool ref
-type lvar
+type lvar = int
datatype func =
DtCon0 of string
@@ -41,7 +39,13 @@ datatype prop =
| Reln of reln * exp list
| Cond of exp * prop
-datatype ('a, 'b) sum = inl of 'a | inr of 'b
+datatype chunk =
+ String of string
+ | Exp of Mono.exp
+
+type 'a parser = chunk list -> ('a * chunk list) option
+
+val parse : 'a parser -> Mono.exp -> 'a option
datatype Rel =
Exps of exp * exp -> prop
@@ -61,19 +65,27 @@ datatype sqexp =
| Unmodeled
| Null
+datatype ('a,'b) sum = inl of 'a | inr of 'b
+
datatype sitem =
SqField of string * string
| SqExp of sqexp * string
-type query1
+type query1 = {Select : sitem list,
+ From : (string * string) list,
+ Where : sqexp option}
datatype query =
Query1 of query1
| Union of query * query
+val query : query parser
+
datatype dml =
Insert of string * (string * sqexp) list
| Delete of string * sqexp
| Update of string * (string * sqexp) list * sqexp
+val dml : dml parser
+
end