annotate tests/limit.ur @ 1887:2e6795cc992f

A fancier test for the new SQL constraints subtyping
author Adam Chlipala <adam@chlipala.net>
date Mon, 04 Nov 2013 16:00:48 -0500
parents 02e1870a0516
children
rev   line source
adamc@231 1 table t : {A : int, B : string, C : float}
adamc@231 2
adamc@231 3 val q1 = (SELECT * FROM t LIMIT 42)
adamc@231 4 val q2 = fn n => (SELECT * FROM t LIMIT {n})
adamc@232 5
adamc@232 6 val q3 = (SELECT * FROM t OFFSET 3)
adamc@232 7 val q4 = fn n => fn m => (SELECT * FROM t LIMIT {n} OFFSET {m})
adamc@262 8
adamc@262 9
adamc@262 10 datatype list a = Nil | Cons of a * list a
adamc@262 11
adamc@262 12 val r1 : transaction (list {A : int, B : string, C : float}) =
adamc@263 13 query (q4 3 7)
adamc@262 14 (fn fs acc => return (Cons (fs.T, acc)))
adamc@262 15 Nil
adamc@262 16
adamc@262 17 val r2 : transaction string =
adamc@262 18 ls <- r1;
adamc@262 19 return (case ls of
adamc@262 20 Nil => "Problem"
adamc@262 21 | Cons ({B = b, ...}, _) => b)
adamc@262 22
adamc@262 23 val main : unit -> transaction page = fn () =>
adamc@262 24 s <- r2;
adamc@262 25 return <html><body>
adamc@262 26 {cdata s}
adamc@262 27 </body></html>