aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sql.sml
diff options
context:
space:
mode:
authorGravatar Ziv Scully <ziv@mit.edu>2014-05-31 03:08:16 -0400
committerGravatar Ziv Scully <ziv@mit.edu>2014-05-31 03:08:16 -0400
commit171e5ecea687a43033e92c98c0661cc161d50e4a (patch)
tree84fb602a1abddb351063d16cd44c147b0053aecc /src/sql.sml
parent77fa8d45d3bcc722b25e93a8c24081c74f3f4709 (diff)
Cleans up interface (it's now a command line option) and renames project to "sqlcache" in the all-one-word style. Still has issues to do with concurrency, retrying transactions, and foreign function calls that either rely on state or have side effects.
Diffstat (limited to 'src/sql.sml')
-rw-r--r--src/sql.sml20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/sql.sml b/src/sql.sml
index 8642c9d2..11df715c 100644
--- a/src/sql.sml
+++ b/src/sql.sml
@@ -177,10 +177,10 @@ val uw_ident = wrapP ident (fn s => if String.isPrefix "uw_" s andalso size s >=
else
NONE)
-val field = wrap (follow t_ident
- (follow (const ".")
- uw_ident))
- (fn (t, ((), f)) => (t, f))
+val field = wrap (follow (opt (follow t_ident (const ".")))
+ uw_ident)
+ (fn (SOME (t, ()), f) => (t, f)
+ | (NONE, f) => ("T", f)) (* Should probably deal with this MySQL/SQLite case better some day. *)
datatype Rel =
Exps of exp * exp -> prop
@@ -396,22 +396,22 @@ val insert = log "insert"
val delete = log "delete"
(wrap (follow (const "DELETE FROM ")
(follow uw_ident
- (follow (const " AS T_T WHERE ")
+ (follow (follow (opt (const " AS T_T")) (const " WHERE "))
sqexp)))
- (fn ((), (tab, ((), es))) => (tab, es)))
+ (fn ((), (tab, (_, es))) => (tab, es)))
val setting = log "setting"
- (wrap (follow uw_ident (follow (const " = ") sqexp))
- (fn (f, ((), e)) => (f, e)))
+ (wrap (follow uw_ident (follow (const " = ") sqexp))
+ (fn (f, ((), e)) => (f, e)))
val update = log "update"
(wrap (follow (const "UPDATE ")
(follow uw_ident
- (follow (const " AS T_T SET ")
+ (follow (follow (opt (const " AS T_T")) (const " SET "))
(follow (list setting)
(follow (ws (const "WHERE "))
sqexp)))))
- (fn ((), (tab, ((), (fs, ((), e))))) =>
+ (fn ((), (tab, (_, (fs, ((), e))))) =>
(tab, fs, e)))
val dml = log "dml"