summaryrefslogtreecommitdiff
path: root/src/prepare.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-07-16 16:29:13 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-07-16 16:29:13 -0400
commitfa6034d3141983cecef030e539f9a333f10d466b (patch)
treee84e8e1578e80ec83ada5acef409f93e11fabb03 /src/prepare.sml
parentd59ec50a871633c463f3e670e964522da39f5020 (diff)
Sequence code compiles in MySQL
Diffstat (limited to 'src/prepare.sml')
-rw-r--r--src/prepare.sml45
1 files changed, 24 insertions, 21 deletions
diff --git a/src/prepare.sml b/src/prepare.sml
index 0a8ca7a2..29def780 100644
--- a/src/prepare.sml
+++ b/src/prepare.sml
@@ -216,27 +216,30 @@ fun prepExp (e as (_, loc), sns) =
end)
| ENextval {seq, ...} =>
- let
- val s = case seq of
- (EPrim (Prim.String s), loc) =>
- (EPrim (Prim.String ("SELECT NEXTVAL('" ^ s ^ "')")), loc)
- | _ =>
- let
- val s' = (EFfiApp ("Basis", "strcat", [seq, (EPrim (Prim.String "')"), loc)]), loc)
- in
- (EFfiApp ("Basis", "strcat", [(EPrim (Prim.String "SELECT NEXTVAL('"), loc), s']), loc)
- end
- in
- case prepString (s, [], 0) of
- NONE => (e, sns)
- | SOME (ss, n) =>
- let
- val s = String.concat (rev ss)
- in
- ((ENextval {seq = seq, prepared = SOME (#2 sns, s)}, loc),
- ((s, n) :: #1 sns, #2 sns + 1))
- end
- end
+ if #supportsNextval (Settings.currentDbms ()) then
+ let
+ val s = case seq of
+ (EPrim (Prim.String s), loc) =>
+ (EPrim (Prim.String ("SELECT NEXTVAL('" ^ s ^ "')")), loc)
+ | _ =>
+ let
+ val s' = (EFfiApp ("Basis", "strcat", [seq, (EPrim (Prim.String "')"), loc)]), loc)
+ in
+ (EFfiApp ("Basis", "strcat", [(EPrim (Prim.String "SELECT NEXTVAL('"), loc), s']), loc)
+ end
+ in
+ case prepString (s, [], 0) of
+ NONE => (e, sns)
+ | SOME (ss, n) =>
+ let
+ val s = String.concat (rev ss)
+ in
+ ((ENextval {seq = seq, prepared = SOME (#2 sns, s)}, loc),
+ ((s, n) :: #1 sns, #2 sns + 1))
+ end
+ end
+ else
+ (e, sns)
| EUnurlify (e, t) =>
let