comparison 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
comparison
equal deleted inserted replaced
228:19e5791923d0 229:016d71e878c1
12 con sql_table :: {Type} -> Type 12 con sql_table :: {Type} -> Type
13 13
14 (*** Queries *) 14 (*** Queries *)
15 15
16 con sql_query :: {{Type}} -> Type 16 con sql_query :: {{Type}} -> Type
17 con sql_query1 :: {{Type}} -> {{Type}} -> Type
17 con sql_exp :: {{Type}} -> {{Type}} -> Type -> Type 18 con sql_exp :: {{Type}} -> {{Type}} -> Type -> Type
18 19
19 con sql_subset :: {{Type}} -> {{Type}} -> Type 20 con sql_subset :: {{Type}} -> {{Type}} -> Type
20 val sql_subset : keep_drop :: {({Type} * {Type})} 21 val sql_subset : keep_drop :: {({Type} * {Type})}
21 -> sql_subset 22 -> sql_subset
26 [nm] ~ acc => 27 [nm] ~ acc =>
27 [nm = fields.1] ++ acc) [] keep_drop) 28 [nm = fields.1] ++ acc) [] keep_drop)
28 val sql_subset_all : tables :: {{Type}} 29 val sql_subset_all : tables :: {{Type}}
29 -> sql_subset tables tables 30 -> sql_subset tables tables
30 31
31 val sql_query : tables ::: {{Type}} 32 val sql_query1 : tables ::: {{Type}}
32 -> grouped ::: {{Type}} 33 -> grouped ::: {{Type}}
33 -> selected ::: {{Type}} 34 -> selected ::: {{Type}}
34 -> {From : $(fold (fn nm => fn fields :: {Type} => fn acc => 35 -> {From : $(fold (fn nm => fn fields :: {Type} => fn acc =>
35 [nm] ~ acc => [nm = sql_table fields] ++ acc) [] tables), 36 [nm] ~ acc => [nm = sql_table fields] ++ acc) [] tables),
36 Where : sql_exp tables [] bool, 37 Where : sql_exp tables [] bool,
37 GroupBy : sql_subset tables grouped, 38 GroupBy : sql_subset tables grouped,
38 Having : sql_exp grouped tables bool, 39 Having : sql_exp grouped tables bool,
39 SelectFields : sql_subset grouped selected} 40 SelectFields : sql_subset grouped selected}
41 -> sql_query1 tables selected
42
43 type sql_relop
44 val sql_union : sql_relop
45 val sql_intersect : sql_relop
46 val sql_except : sql_relop
47 val sql_relop : sql_relop
48 -> tables1 ::: {{Type}}
49 -> tables2 ::: {{Type}}
50 -> selected ::: {{Type}}
51 -> sql_query1 tables1 selected -> sql_query1 tables2 selected -> sql_query1 selected selected
52
53 val sql_query : tables ::: {{Type}}
54 -> selected ::: {{Type}}
55 -> sql_query1 tables selected
40 -> sql_query selected 56 -> sql_query selected
41 57
42 val sql_field : otherTabs ::: {{Type}} -> otherFields ::: {Type} -> fieldType ::: Type -> agg ::: {{Type}} 58 val sql_field : otherTabs ::: {{Type}} -> otherFields ::: {Type} -> fieldType ::: Type -> agg ::: {{Type}}
43 -> tab :: Name -> field :: Name 59 -> tab :: Name -> field :: Name
44 -> sql_exp ([tab = [field = fieldType] ++ otherFields] ++ otherTabs) agg fieldType 60 -> sql_exp ([tab = [field = fieldType] ++ otherFields] ++ otherTabs) agg fieldType