view tests/blob.ur @ 1249:7c6fc92f6c31

Complain about DValRec; optimizations for unit-valued ECase and forgetting of path conditions across ESeq
author Adam Chlipala <adamc@hcoop.net>
date Thu, 29 Apr 2010 11:47:24 -0400
parents 034eeb099564
children 67ebd30a2283
line wrap: on
line source
sequence s
table t : { Id : int, Nam : option string, Data : blob, Desc : string, Typ : string }

fun see id =
    r <- oneRow (SELECT t.Data, t.Typ FROM t WHERE t.Id = {[id]});
    returnBlob r.T.Data (blessMime r.T.Typ)

fun save r =
    id <- nextval s;
    dml (INSERT INTO t (Id, Nam, Data, Desc, Typ)
         VALUES ({[id]}, {[fileName r.Data]}, {[fileData r.Data]}, {[r.Desc]}, {[fileMimeType r.Data]}));
    main ()

and main () =
    ls <- queryX (SELECT t.Id, t.Desc, octet_length(t.Data) AS Len FROM t ORDER BY t.Desc)
          (fn r => <xml><li><a link={see r.T.Id}>{[r.T.Desc]} ({[r.Len]})</a></li></xml>);
    return <xml><body>
      {ls}

      <br/>

      <form>
        <textbox{#Desc}/>
        <upload{#Data}/>
        <submit action={save}/>
      </form>
    </body></xml>