summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2012-08-22 08:46:32 -0400
committerGravatar Adam Chlipala <adam@chlipala.net>2012-08-22 08:46:32 -0400
commitfec2293fe7e6fb3141e033495723df8a26c8da75 (patch)
treef8f0044758a9e4cba7b94e23ca89d220eaee9989
parentb3c120ed994c7fca812cc6a49935e9e9cbd3490f (diff)
show_sql_query
-rw-r--r--lib/ur/basis.urs3
-rw-r--r--src/monoize.sml6
-rw-r--r--tests/showSql.ur5
-rw-r--r--tests/showSql.urp3
4 files changed, 17 insertions, 0 deletions
diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs
index 4777be81..1bfd9da6 100644
--- a/lib/ur/basis.urs
+++ b/lib/ur/basis.urs
@@ -641,6 +641,9 @@ val query : tables ::: {{Type}} -> exps ::: {Type}
-> state
-> transaction state
+val show_sql_query : freeTables ::: {{Type}} -> freeAggs ::: {{Type}} -> tables ::: {{Type}} -> exps ::: {Type}
+ -> show (sql_query freeTables freeAggs tables exps)
+
(*** Database mutators *)
diff --git a/src/monoize.sml b/src/monoize.sml
index 1b9c97ed..b5e2a5b6 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -1257,6 +1257,12 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
in
((L'.EAbs ("s", s, s, (L'.ERel 0, loc)), loc), fm)
end
+ | L.ECApp ((L.ECApp ((L.ECApp ((L.ECApp ((L.EFfi ("Basis", "show_sql_query"), _), _), _), _), _), _), _), _) =>
+ let
+ val s = (L'.TFfi ("Basis", "string"), loc)
+ in
+ ((L'.EAbs ("s", s, s, (L'.ERel 0, loc)), loc), fm)
+ end
| L.ECApp ((L.EFfi ("Basis", "mkShow"), _), t) =>
let
val t = monoType env t
diff --git a/tests/showSql.ur b/tests/showSql.ur
new file mode 100644
index 00000000..c373b21c
--- /dev/null
+++ b/tests/showSql.ur
@@ -0,0 +1,5 @@
+table t : { A : int }
+
+fun main () : transaction page = return <xml><body>
+ {[(SELECT t.A FROM t ORDER BY t.A DESC) : sql_query [] [] _ _]}
+</body></xml>
diff --git a/tests/showSql.urp b/tests/showSql.urp
new file mode 100644
index 00000000..415248cd
--- /dev/null
+++ b/tests/showSql.urp
@@ -0,0 +1,3 @@
+database dbname=test
+
+showSql