comparison tests/policy.ur @ 1210:c5bd970e77a5

Parsing more comparison operators
author Adam Chlipala <adamc@hcoop.net>
date Tue, 06 Apr 2010 12:04:08 -0400
parents 775357041e48
children 648e6b087dfb
comparison
equal deleted inserted replaced
1209:775357041e48 1210:c5bd970e77a5
11 (* Everyone may knows IDs and names. *) 11 (* Everyone may knows IDs and names. *)
12 policy query_policy (SELECT fruit.Id, fruit.Nam 12 policy query_policy (SELECT fruit.Id, fruit.Nam
13 FROM fruit) 13 FROM fruit)
14 14
15 (* The weight is sensitive information; you must know the secret. *) 15 (* The weight is sensitive information; you must know the secret. *)
16 policy query_policy (SELECT fruit.Weight 16 policy query_policy (SELECT fruit.Weight, fruit.Secret
17 FROM fruit 17 FROM fruit
18 WHERE known(fruit.Secret)) 18 WHERE known(fruit.Secret))
19 19
20 policy query_policy (SELECT order.Id, order.Fruit, order.Qty 20 policy query_policy (SELECT order.Id, order.Fruit, order.Qty
21 FROM order, fruit 21 FROM order, fruit
24 24
25 fun fname r = 25 fun fname r =
26 x <- queryX (SELECT fruit.Weight 26 x <- queryX (SELECT fruit.Weight
27 FROM fruit 27 FROM fruit
28 WHERE fruit.Nam = {[r.Nam]} 28 WHERE fruit.Nam = {[r.Nam]}
29 AND fruit.Secret = {[r.Secret]}) 29 AND fruit.Secret = {[r.Secret]}
30 AND fruit.Weight <> 3.14
31 AND fruit.Weight < 100.0
32 AND fruit.Weight <= 200.1
33 AND fruit.Weight > 1.23
34 AND fruit.Weight >= 1.24)
30 (fn r => <xml>Weight is {[r.Fruit.Weight]}</xml>); 35 (fn r => <xml>Weight is {[r.Fruit.Weight]}</xml>);
31 36
32 return <xml><body> 37 return <xml><body>
33 {x} 38 {x}
34 </body></xml> 39 </body></xml>
35 40
36 fun main () = 41 fun main () =
37 x1 <- queryX (SELECT fruit.Id, fruit.Nam 42 x1 <- queryX (SELECT fruit.Id, fruit.Nam
38 FROM fruit 43 FROM fruit
39 WHERE fruit.Nam = "apple" 44 WHERE fruit.Nam = "apple")
40 AND fruit.Weight = 1.23)
41 (fn x => <xml><li>{[x.Fruit.Id]}: {[x.Fruit.Nam]}</li></xml>); 45 (fn x => <xml><li>{[x.Fruit.Id]}: {[x.Fruit.Nam]}</li></xml>);
42 46
43 x2 <- queryX (SELECT fruit.Nam, order.Qty 47 x2 <- queryX (SELECT fruit.Nam, order.Qty
44 FROM fruit, order 48 FROM fruit, order
45 WHERE fruit.Id = order.Fruit 49 WHERE fruit.Id = order.Fruit
46 AND order.Qty = 13) 50 AND order.Qty = 13)
47 (fn x => <xml><li>{[x.Fruit.Nam]}: {[x.Order.Qty]}</li></xml>); 51 (fn x => <xml><li>{[x.Fruit.Nam]}: {[x.Order.Qty]}</li></xml>);
48 52
49 return <xml><body> 53 return <xml><body>
50 <ul>{x1}</ul> 54 <ul>{x1}</ul>
55
51 <ul>{x2}</ul> 56 <ul>{x2}</ul>
52 57
53 <form> 58 <form>
54 Fruit name: <textbox{#Nam}/><br/> 59 Fruit name: <textbox{#Nam}/><br/>
55 Secret: <textbox{#Secret}/><br/> 60 Secret: <textbox{#Secret}/><br/>