summaryrefslogtreecommitdiff
path: root/src/monoize.sml
diff options
context:
space:
mode:
authorGravatar Ziv Scully <ziv@mit.edu>2014-10-14 18:05:09 -0400
committerGravatar Ziv Scully <ziv@mit.edu>2014-10-14 18:05:09 -0400
commit75d1eedd15edc41b1c2bc9d1fce7a74f37bd78a1 (patch)
tree09a958bb9333b12cc118b14053cb9043e8a6463b /src/monoize.sml
parent8cf3a275f25ffcbb97d623c4e988fdcc81ef5978 (diff)
Complete overhaul: cache queries based on immediate query result, not eventual HTML output.
Diffstat (limited to 'src/monoize.sml')
-rw-r--r--src/monoize.sml24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/monoize.sml b/src/monoize.sml
index 6073a21f..d609a67d 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -1957,20 +1957,26 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
(L'.TFun (un, state), loc)),
loc)), loc)
- val body' = (L'.EApp (
+ val body'' = (L'.EApp (
(L'.EApp (
(L'.EApp ((L'.ERel 4, loc),
(L'.ERel 1, loc)), loc),
(L'.ERel 0, loc)), loc),
(L'.ERecord [], loc)), loc)
-
- val body = (L'.EQuery {exps = exps,
- tables = tables,
- state = state,
- query = (L'.ERel 3, loc),
- body = body',
- initial = (L'.ERel 1, loc)},
- loc)
+ val body' = (L'.EQuery {exps = exps,
+ tables = tables,
+ state = state,
+ query = (L'.ERel 3, loc),
+ body = body'',
+ initial = (L'.ERel 1, loc)},
+ loc)
+ val (body, fm) = if Settings.getSqlcache () then
+ let
+ val (urlifiedRel0, fm) = urlifyExp env fm ((L'.ERel 0, loc), state)
+ in
+ (Sqlcache.instrumentQuery (body', urlifiedRel0), fm)
+ end
+ else (body', fm)
in
((L'.EAbs ("q", s, (L'.TFun (ft, (L'.TFun (state, (L'.TFun (un, state), loc)), loc)), loc),
(L'.EAbs ("f", ft, (L'.TFun (state, (L'.TFun (un, state), loc)), loc),