@@ -55,7 +55,7 @@ data Constr = NOTNULL
57data SQL = SELECT SelVar SQL Clause
57data SQL = SELECT SelVar SQL Clause
58− | TBL String
58+ | TBL (List String)
59 | INSERT SQL (List Value)
59 | INSERT SQL (List Value)
60 | INSERTC SQL (List Value) (List Value)
60 | INSERTC SQL (List Value) (List Value)
61 | UPDATE SQL condClause
61 | UPDATE SQL condClause
@@ -142,6 +142,7 @@ listValType xs ((val, types, constr) :: vs) = let (str , newxs) = valString xs v
142 let (finalstr, finalxs) = listValType newxs'' vs in
142 let (finalstr, finalxs) = listValType newxs'' vs in
143 ((unwords(intersperse " " (words(str) ++ words(str') ++ words(str'') ++ words(finalstr)))) , finalxs)
143 ((unwords(intersperse " " (words(str) ++ words(str') ++ words(str'') ++ words(finalstr)))) , finalxs)
145-----------------------------------------------------------
146-----------------------------------------------------------
146-- | Evaluates a condition after WHERE clause
147-- | Evaluates a condition after WHERE clause
147-----------------------------------------------------------
148-----------------------------------------------------------
@@ -204,37 +205,41 @@ condClauseStr xs (WHERE setcl1 setcl2) = let (condstr, newxs) = condClauseStr xs
204 let (condstr', newxs') = clauseString newxs setcl2 in
205 let (condstr', newxs') = clauseString newxs setcl2 in
205 ( condstr ++ " WHERE " ++ condstr', newxs')
206 ( condstr ++ " WHERE " ++ condstr', newxs')
207−--TODO SELECT data from tbl1 where num > (SELECT num from tbl1 where num = 24)
208+-- SELECT data from tbl1 where num > (SELECT num from tbl1 where num = 24)
208−-- evalSQL [] ((SELECT ALL) (TBL "tbl") (MkSQL ((SELECT ALL) (TBL "tbl") (MkCond (VCol ") ) ) )
209+-- evalSQL [] ((SELECT ALL) (TBL "tbl") (MkSQL ((SELECT ALL) (TBL "tbl") (MkCond (VCol ") ) ) )
209--clauseString xs (MkSQL sql) = (evalSQL xs sql)
211--clauseString xs (MkSQL sql) = (evalSQL xs sql)
213+-- Separate list of tables
212−evalSQL xs (TBL tbl) = (tbl, xs)
214+evalSQL xs (TBL tbl) = ((unwords (intersperse "," ( tbl))), xs)
213evalSQL xs (SELECT vars sql' c) = let (sqlstring, newxs) = evalSQL xs sql' in
215evalSQL xs (SELECT vars sql' c) = let (sqlstring, newxs) = evalSQL xs sql' in
214 let (csstring, newxs') = clauseString newxs c in
216 let (csstring, newxs') = clauseString newxs c in
215 case c of
217 case c of
216 Empty => case vars of
218 Empty => case vars of
217 (ALL ) => if complexType sql' then ("SELECT " ++ "*" ++ " FROM "
219 (ALL ) => if complexType sql' then ("SELECT " ++ "*" ++ " FROM "
218 ++ (putBrackets sqlstring) ++ csstring, newxs')
220 ++ (putBrackets sqlstring) ++ csstring, newxs')
219− else ("SELECT " ++ "*" ++ " FROM " ++ sqlstring ++ csstring, newxs')
222+ else ("SELECT " ++ "*" ++ " FROM " ++ sqlstring
223+ ++ csstring, newxs')
221− (Cols selvar) => if complexType sql' then ("SELECT " ++ unwords ( intersperse "" ( selvar ++
225+ (Cols selvar) => if complexType sql' then ("SELECT " ++ (unwords selvar) ++
222− (words ( " FROM " ++ (putBrackets sqlstring) )))) ++ csstring, newxs')
226+ " FROM " ++ (putBrackets sqlstring) ++ csstring, newxs')
223− else ("SELECT " ++ unwords ( intersperse "" ( selvar ++
228+ else ("SELECT " ++ (unwords selvar )++ " FROM " ++ sqlstring
224− (words ( "FROM " ++ sqlstring )))) ++ csstring, newxs')
229+ ++ csstring, newxs')
226 _ => case vars of
231 _ => case vars of
227 (ALL ) => if complexType sql' then ("SELECT " ++ "*" ++ " FROM "
232 (ALL ) => if complexType sql' then ("SELECT " ++ "*" ++ " FROM "
228− ++ (putBrackets sqlstring) ++ " WHERE " ++ csstring , newxs')
233+ ++ " WHERE " ++ csstring , newxs')
229− else ("SELECT " ++ "*" ++ " FROM "
234+ else ("SELECT " ++ "*" ++ " FROM " ++ sqlstring
230− ++ sqlstring ++ " WHERE " ++ csstring , newxs')
235+ ++ " WHERE " ++ csstring , newxs')
232− (Cols selvar) => if complexType sql' then ("SELECT " ++ unwords ( intersperse "" ( selvar ++
237+ (Cols selvar) => if complexType sql' then ("SELECT " ++ (unwords selvar) ++ " FROM " ++
233− (words ( " FROM " ++ (putBrackets sqlstring) ))))
238+ (putBrackets sqlstring) ++ " WHERE "
234− ++ " WHERE " ++ csstring , newxs')
239+ ++ csstring , newxs')
236− else ("SELECT " ++ unwords ( intersperse "" ( selvar ++
241+ else ("SELECT " ++ (unwords selvar) ++ " FROM " ++ sqlstring
237− (words ( "FROM " ++ sqlstring )))) ++ " WHERE " ++ csstring , newxs')
242+ ++ " WHERE " ++ csstring , newxs')
240evalSQL xs (INSERT sql vals) = let (tblname, newvals) = evalSQL xs sql in
245evalSQL xs (INSERT sql vals) = let (tblname, newvals) = evalSQL xs sql in