diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-07-16 16:29:13 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-07-16 16:29:13 -0400 |
commit | fa6034d3141983cecef030e539f9a333f10d466b (patch) | |
tree | e84e8e1578e80ec83ada5acef409f93e11fabb03 /src/prepare.sml | |
parent | d59ec50a871633c463f3e670e964522da39f5020 (diff) |
Sequence code compiles in MySQL
Diffstat (limited to 'src/prepare.sml')
-rw-r--r-- | src/prepare.sml | 45 |
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 |