annotate tests/sql_option.ur @ 1451:b6ce8ef0ea88

Before allowing an indirect return, check (dynamically, for now) that we aren't in an RPC handler
author Adam Chlipala <adam@chlipala.net>
date Sun, 17 Apr 2011 13:43:00 -0400
parents 4efab85405be
children
rev   line source
adamc@467 1 table t : { O : option int }
adamc@467 2
adamc@467 3 fun addNull () =
adamc@467 4 dml (INSERT INTO t (O) VALUES (NULL));
adamc@467 5 return <xml>Done</xml>
adamc@467 6
adamc@468 7 fun add3 () =
adamc@468 8 dml (INSERT INTO t (O) VALUES ({Some 3}));
adamc@468 9 return <xml>Done</xml>
adamc@468 10
adamc@468 11 fun addN r =
adamc@468 12 dml (INSERT INTO t (O) VALUES ({Some (readError r.N)}));
adamc@468 13 return <xml>Done</xml>
adamc@467 14
adamc@467 15 fun main () : transaction page =
adamc@467 16 xml <- queryX (SELECT * FROM t)
adamc@467 17 (fn r => case r.T.O of
adamc@467 18 None => <xml>Nada<br/></xml>
adamc@467 19 | Some n => <xml>Num: {[n]}<br/></xml>);
adamc@467 20 return <xml><body>
adamc@467 21 {xml}
adamc@467 22
adamc@467 23 <a link={addNull ()}>Add a null</a><br/>
adamc@468 24 <a link={add3 ()}>Add a 3</a><br/>
adamc@468 25 <form>
adamc@468 26 Add <textbox{#N}/> <submit action={addN}/>
adamc@468 27 </form>
adamc@467 28 </body></xml>