@@ -17,6 +17,7 @@ data Cond = Equals Value Value
1717 |MkGTE Value Value
1818 |MkLT Value Value
1919 |MkLTE Value Value
20+ |MkNULL Value
2021
2122
2223data Clause = MkCond Cond
@@ -25,7 +26,7 @@ data Clause = MkCond Cond
2526 | Empty
2627
2728data condClause = SET Clause
28− | WHERE condClause Clause
29+ |WHERE condClause Clause
2930
3031data SelVar = Cols (List String)
3132 |ALL
@@ -33,7 +34,9 @@ data SelVar = Cols (List String)
3334data SQL = SELECT SelVar SQL Clause
3435 | TBL String
3536 | INSERT SQL (List Value)
37+ | INSERTC SQL (List Value) (List Value)
3638 | UPDATE SQL condClause
39+ | CREATE SQL (List Value)
3740
3841-- remember to remove these funcs later
3942foldr1 : (a -> a -> a) -> List a -> a
@@ -85,6 +88,8 @@ evalCond xs (MkLTE val1 val2) = let (restring , newxs ) = valString xs val1 in
8588 let (restring2, newxs') = valString newxs val2 in
8689 (restring ++ " =< " ++ restring2, ( newxs'))
8790
91+evalCond xs (MkNULL val) = let (restring , newxs ) = valString xs val in
92+ (restring ++ " IS NULL " , newxs)
8893
8994clauseString : List (Maybe(Int, Value)) -> Clause -> (String, List (Maybe(Int, Value)))
9095clauseString xs (Empty) = ("" , []) -- No condition
@@ -129,6 +134,12 @@ evalSQL xs (INSERT sql vals) = let (tblname, newvals) = evalSQL xs sql in
129134 let (str, newxs ) = listVal newvals vals in
130135 ("INSERT INTO " ++ tblname ++ " VALUES (" ++ str ++ ")" , newxs)
131136
137+evalSQL xs (INSERTC sql cols vals) = let (tblname, newvals) = evalSQL xs sql in
138+ let (strcol, newcol) = listVal newvals cols in
139+ let (strval, newcolval) = listVal newcol vals in
140+ ("INSERT INTO " ++ tblname ++ "(" ++ strcol ++ ")" ++ "VALUES (" ++ strval ++ ")", newcolval)
141+
142+
132143evalSQL xs (UPDATE sql cl) = let (tblname, newxs) = evalSQL xs sql in
133144 let (csstring, newxs') = condClauseStr newxs cl in
134145 ("UPDATE " ++ tblname ++ csstring, newxs')