diff tests/nested.ur @ 880:8e9f2d247dba

Testing nested queries
author Adam Chlipala <adamc@hcoop.net>
date Fri, 17 Jul 2009 12:25:34 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/nested.ur	Fri Jul 17 12:25:34 2009 -0400
@@ -0,0 +1,29 @@
+table t : {A : int, B : int}
+
+fun init () =
+    dml (DELETE FROM t WHERE TRUE);
+    dml (INSERT INTO t (A, B) VALUES (1, 2));
+    dml (INSERT INTO t (A, B) VALUES (2, 3))
+
+fun easy () =
+    queryX' (SELECT MAX(t.A) AS M FROM t)
+    (fn r =>
+        queryX (SELECT * FROM t WHERE t.A = {[r.M]})
+        (fn r => <xml>({[r.T.A]}, {[r.T.B]})</xml>))
+
+fun hard id =
+    queryX' (SELECT t.B AS N FROM t WHERE t.A = {[id]})
+    (fn r =>
+        b <- hard r.N;
+        return <xml>({[id]}, {[r.N]}); {b}</xml>)
+
+fun doit () =
+    init ();
+    b1 <- easy ();
+    b2 <- hard 1;
+    return <xml><body>
+      {b1}<br/>
+      {b2}
+    </body></xml>
+
+fun main () = return <xml><body><form><submit action={doit}/></form></body></xml>