From 861f4c0a3619812bb56f2f6b5dd5cb3a13b05bd4 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 26 Apr 2009 10:53:36 -0400 Subject: Handling nullable blobs --- tests/blobOpt.ur | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/blobOpt.ur (limited to 'tests/blobOpt.ur') diff --git a/tests/blobOpt.ur b/tests/blobOpt.ur new file mode 100644 index 00000000..261ce226 --- /dev/null +++ b/tests/blobOpt.ur @@ -0,0 +1,38 @@ +sequence s +table t : { Id : int, Data : option blob, Typ : string } + +fun view id = + r <- oneRow (SELECT t.Data, t.Typ FROM t WHERE t.Id = {[id]}); + case r.T.Data of + None => return This one's empty. + | Some data => returnBlob data (blessMime r.T.Typ) + +fun save r = + id <- nextval s; + dml (INSERT INTO t (Id, Data, Typ) + VALUES ({[id]}, {[Some (fileData r.Data)]}, {[fileMimeType r.Data]})); + main () + +and saveEmpty () = + id <- nextval s; + dml (INSERT INTO t (Id, Data, Typ) + VALUES ({[id]}, {[None]}, "bogus")); + main () + +and main () = + ls <- queryX (SELECT t.Id FROM t) + (fn r =>
  • {[r.T.Id]}
  • ); + return + {ls} + +
    + +
    + + + + +
    + + +
    -- cgit v1.2.3