summaryrefslogtreecommitdiff
path: root/src/core_util.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-04-28 15:04:37 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-04-28 15:04:37 -0400
commit51f2a80dac5c3cd25a27fb5abfdfa50d813ab0b2 (patch)
treee4e2246dc15a7cbbf067401a21197b6fd17ea95b /src/core_util.sml
parentcaf010bca085bea65037d194c3eb21ca8b83c23b (diff)
A view query works
Diffstat (limited to 'src/core_util.sml')
-rw-r--r--src/core_util.sml15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core_util.sml b/src/core_util.sml
index d05aaa72..ae956121 100644
--- a/src/core_util.sml
+++ b/src/core_util.sml
@@ -946,6 +946,12 @@ fun mapfoldB {kind = fk, con = fc, exp = fe, decl = fd, bind} =
fn cc' =>
(DTable (x, n, c', s, pe', pc', ce', cc'), loc))))))
| DSequence _ => S.return2 dAll
+ | DView (x, n, s, e, c) =>
+ S.bind2 (mfe ctx e,
+ fn e' =>
+ S.map2 (mfc ctx c,
+ fn c' =>
+ (DView (x, n, s, e', c'), loc)))
| DDatabase _ => S.return2 dAll
| DCookie (x, n, c, s) =>
S.map2 (mfc ctx c,
@@ -1082,6 +1088,14 @@ fun mapfoldB (all as {bind, ...}) =
in
bind (ctx, NamedE (x, n, t, NONE, s))
end
+ | DView (x, n, s, _, c) =>
+ let
+ val loc = #2 d'
+ val ct = (CFfi ("Basis", "sql_view"), loc)
+ val ct = (CApp (ct, c), loc)
+ in
+ bind (ctx, NamedE (x, n, ct, NONE, s))
+ end
| DDatabase _ => ctx
| DCookie (x, n, c, s) =>
let
@@ -1154,6 +1168,7 @@ val maxName = foldl (fn ((d, _) : decl, count) =>
| DExport _ => count
| DTable (_, n, _, _, _, _, _, _) => Int.max (n, count)
| DSequence (_, n, _) => Int.max (n, count)
+ | DView (_, n, _, _, _) => Int.max (n, count)
| DDatabase _ => count
| DCookie (_, n, _, _) => Int.max (n, count)
| DStyle (_, n, _) => Int.max (n, count)) 0