diff src/prepare.sml @ 858:346cf1908a17

Avoid using prepared statements for non-persistent protocols
author Adam Chlipala <adamc@hcoop.net>
date Sat, 27 Jun 2009 10:50:45 -0400
parents 8688e01ae469
children 3c7b48040dcf
line wrap: on
line diff
--- a/src/prepare.sml	Sat Jun 27 10:30:51 2009 -0400
+++ b/src/prepare.sml	Sat Jun 27 10:50:45 2009 -0400
@@ -196,18 +196,26 @@
                           initial = initial, prepared = NONE}, loc),
                  sns)
               | SOME (ss, n) =>
-                ((EQuery {exps = exps, tables = tables, rnum = rnum,
-                          state = state, query = query, body = body,
-                          initial = initial, prepared = SOME (#2 sns)}, loc),
-                 ((String.concat (rev ss), n) :: #1 sns, #2 sns + 1))
+                let
+                    val s = String.concat (rev ss)
+                in
+                    ((EQuery {exps = exps, tables = tables, rnum = rnum,
+                              state = state, query = query, body = body,
+                              initial = initial, prepared = SOME (#2 sns, s)}, loc),
+                     ((s, n) :: #1 sns, #2 sns + 1))
+                end
         end
 
       | EDml {dml, ...} =>
         (case prepString (dml, [], 0) of
              NONE => (e, sns)
            | SOME (ss, n) =>
-             ((EDml {dml = dml, prepared = SOME (#2 sns)}, loc),
-              ((String.concat (rev ss), n) :: #1 sns, #2 sns + 1)))
+             let
+                 val s = String.concat (rev ss)
+             in
+                 ((EDml {dml = dml, prepared = SOME (#2 sns, s)}, loc),
+                  ((s, n) :: #1 sns, #2 sns + 1))
+             end)
 
       | ENextval {seq, ...} =>
         let
@@ -224,8 +232,12 @@
             case prepString (s, [], 0) of
                 NONE => (e, sns)
               | SOME (ss, n) =>
-                ((ENextval {seq = seq, prepared = SOME (#2 sns)}, loc),
-                 ((String.concat (rev ss), n) :: #1 sns, #2 sns + 1))
+                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
 
       | EUnurlify (e, t) =>