diff src/sql_cache.sml @ 2204:01c8aceac480

Finishes initial prototype, caching parameterless pages with table-match-based invalidation. Still has problems parsing non-Postgres SQL dialects properly.
author Ziv Scully <ziv@mit.edu>
date Tue, 27 May 2014 21:14:13 -0400
parents 39faa4a037f4
children
line wrap: on
line diff
--- a/src/sql_cache.sml	Tue Mar 25 02:04:06 2014 -0400
+++ b/src/sql_cache.sml	Tue May 27 21:14:13 2014 -0400
@@ -10,6 +10,10 @@
 structure SM = BinaryMapFn (StringKey)
 structure SIMM = MultimapFn (structure KeyMap = SM structure ValSet = IS)
 
+val ffiIndices : int list ref = ref []
+val rs : int list ref = ref []
+val ws : int list ref = ref []
+
 val rec tablesRead =
  fn Query1 {From=tablePairs, ...} => SS.fromList (map #1 tablePairs)
   | Union (q1,q2) => SS.union (tablesRead q1, tablesRead q2)
@@ -54,8 +58,8 @@
                         loc)
 fun boolTyp loc = (TFfi ("Basis", "int"), loc)
 
-fun ffiAppExp (module, func, arg, loc) =
-    (EFfiApp (module, func, [(intExp (arg, loc), intTyp loc)]), loc)
+fun ffiAppExp (module, func, index, loc) =
+    (EFfiApp (module, func ^ Int.toString index, []), loc)
 
 fun sequence (befores, center, afters, loc) =
     List.foldr (fn (exp, seq) => (ESeq (exp, seq), loc))
@@ -173,6 +177,9 @@
         val {readers, writers} = handlerIndices file
         val (fileWithChecks, tablesToIndices) = addCacheChecking (file, readers)
     in
+        rs := IS.listItems readers;
+        ws := IS.listItems writers;
+        ffiIndices := IS.listItems readers;
         addCacheFlushing (fileWithChecks, tablesToIndices, writers)
     end