diff lib/basis.lig @ 229:016d71e878c1

Relational operators; string literals for SQL
author Adam Chlipala <adamc@hcoop.net>
date Thu, 21 Aug 2008 15:27:04 -0400
parents 5ac2cf59b839
children 87d41ac28b30
line wrap: on
line diff
--- a/lib/basis.lig	Thu Aug 21 14:45:31 2008 -0400
+++ b/lib/basis.lig	Thu Aug 21 15:27:04 2008 -0400
@@ -14,6 +14,7 @@
 (*** Queries *)
 
 con sql_query :: {{Type}} -> Type
+con sql_query1 :: {{Type}} -> {{Type}} -> Type
 con sql_exp :: {{Type}} -> {{Type}} -> Type -> Type
 
 con sql_subset :: {{Type}} -> {{Type}} -> Type
@@ -28,7 +29,7 @@
 val sql_subset_all : tables :: {{Type}}
         -> sql_subset tables tables
 
-val sql_query : tables ::: {{Type}}
+val sql_query1 : tables ::: {{Type}}
         -> grouped ::: {{Type}}
         -> selected ::: {{Type}}
         -> {From : $(fold (fn nm => fn fields :: {Type} => fn acc =>
@@ -37,6 +38,21 @@
             GroupBy : sql_subset tables grouped,
             Having : sql_exp grouped tables bool,
             SelectFields : sql_subset grouped selected}
+        -> sql_query1 tables selected
+
+type sql_relop 
+val sql_union : sql_relop
+val sql_intersect : sql_relop
+val sql_except : sql_relop
+val sql_relop : sql_relop
+        -> tables1 ::: {{Type}}
+        -> tables2 ::: {{Type}}
+        -> selected ::: {{Type}}
+        -> sql_query1 tables1 selected -> sql_query1 tables2 selected -> sql_query1 selected selected
+
+val sql_query : tables ::: {{Type}}
+        -> selected ::: {{Type}}
+        -> sql_query1 tables selected
         -> sql_query selected
 
 val sql_field : otherTabs ::: {{Type}} -> otherFields ::: {Type} -> fieldType ::: Type -> agg ::: {{Type}}