diff tests/policy.ur @ 1204:7af5e2af64f4

Parsed a WHERE clause
author Adam Chlipala <adamc@hcoop.net>
date Sun, 04 Apr 2010 17:11:22 -0400
parents a75c66dd2aeb
children 7cd11380cdf1
line wrap: on
line diff
--- a/tests/policy.ur	Sun Apr 04 16:44:34 2010 -0400
+++ b/tests/policy.ur	Sun Apr 04 17:11:22 2010 -0400
@@ -1,12 +1,27 @@
-table fruit : { Id : int, Nam : string, Weight : float, Secret : string }
+type fruit = int
+table fruit : { Id : fruit, Nam : string, Weight : float, Secret : string }
+  PRIMARY KEY Id,
+  CONSTRAINT Nam UNIQUE Nam
+
+type order = int
+table order : { Id : order, Fruit : fruit, Qty : int, Code : int }
+  PRIMARY KEY Id,
+  CONSTRAINT Fruit FOREIGN KEY Fruit REFERENCES fruit(Id)
 
 policy query_policy (SELECT fruit.Id, fruit.Nam, fruit.Weight FROM fruit)
+policy query_policy (SELECT order.Id, order.Fruit, order.Qty FROM order)
 
 fun main () =
-    xml <- queryX (SELECT fruit.Id, fruit.Nam
-                   FROM fruit)
-           (fn x => <xml><li>{[x.Fruit.Id]}: {[x.Fruit.Nam]}</li></xml>);
+    x1 <- queryX (SELECT fruit.Id, fruit.Nam
+                  FROM fruit)
+                 (fn x => <xml><li>{[x.Fruit.Id]}: {[x.Fruit.Nam]}</li></xml>);
+
+    x2 <- queryX (SELECT fruit.Nam, order.Qty
+                  FROM fruit, order
+                  WHERE order.Fruit = fruit.Id)
+                 (fn x => <xml><li>{[x.Fruit.Nam]}: {[x.Order.Qty]}</li></xml>);
 
     return <xml><body>
-      {xml}
+      <ul>{x1}</ul>
+      <ul>{x2}</ul>
     </body></xml>