diff options
author | Ziv Scully <ziv@mit.edu> | 2014-10-14 18:05:09 -0400 |
---|---|---|
committer | Ziv Scully <ziv@mit.edu> | 2014-10-14 18:05:09 -0400 |
commit | 75d1eedd15edc41b1c2bc9d1fce7a74f37bd78a1 (patch) | |
tree | 09a958bb9333b12cc118b14053cb9043e8a6463b /src/monoize.sml | |
parent | 8cf3a275f25ffcbb97d623c4e988fdcc81ef5978 (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.sml | 24 |
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), |