Mercurial > urweb
annotate tests/group_by.ur @ 348:b88f4297167f
Improved inference of records of tuples
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sat, 04 Oct 2008 19:56:59 -0400 |
parents | d1b679dbbc25 |
children |
rev | line source |
---|---|
adamc@226 | 1 table t1 : {A : int, B : string, C : float} |
adamc@226 | 2 table t2 : {A : float, D : int} |
adamc@226 | 3 |
adamc@226 | 4 val q1 = (SELECT * FROM t1 GROUP BY t1.B) |
adamc@226 | 5 val q2 = (SELECT * FROM t1, t2 GROUP BY t1.B, t2.D, t1.A) |
adamc@227 | 6 |
adamc@227 | 7 val q3 = (SELECT * FROM t1 WHERE t1.A = 0 GROUP BY t1.B) |
adamc@259 | 8 val q4 = (SELECT * FROM t1 WHERE t1.A = 0 GROUP BY t1.B HAVING t1.B <> 'Bad') |
adamc@227 | 9 |
adamc@227 | 10 val q5 = (SELECT t1.A, t2.D FROM t1, t2 GROUP BY t2.D, t1.A) |
adamc@228 | 11 val q6 = (SELECT t1.A, t2.D FROM t1, t2 WHERE t1.C = 0.0 GROUP BY t2.D, t1.A HAVING t1.A = t1.A AND t2.D = 17) |
adamc@255 | 12 |
adamc@255 | 13 |
adamc@255 | 14 datatype list a = Nil | Cons of a * list a |
adamc@255 | 15 |
adamc@255 | 16 val r1 : transaction (list {B : string}) = |
adamc@259 | 17 query q4 |
adamc@255 | 18 (fn fs acc => return (Cons (fs.T1, acc))) |
adamc@255 | 19 Nil |
adamc@255 | 20 |
adamc@255 | 21 val r2 : transaction string = |
adamc@255 | 22 ls <- r1; |
adamc@255 | 23 return (case ls of |
adamc@255 | 24 Nil => "Problem" |
adamc@255 | 25 | Cons ({B = b, ...}, _) => b) |
adamc@255 | 26 |
adamc@255 | 27 val main : unit -> transaction page = fn () => |
adamc@255 | 28 s <- r2; |
adamc@255 | 29 return <html><body> |
adamc@255 | 30 {cdata s} |
adamc@255 | 31 </body></html> |