-- Some tests for parsing full queries. {-# LANGUAGE OverloadedStrings #-} module Language.SQL.SimpleSQL.FullQueries (fullQueriesTests) where import Language.SQL.SimpleSQL.TestTypes import Language.SQL.SimpleSQL.Syntax fullQueriesTests :: TestItem fullQueriesTests = Group "queries" $ map (uncurry (TestQueryExpr ansi2011)) [("select count(*) from t" ,makeSelect {qeSelectList = [(App [Name Nothing "count"] [Star], Nothing)] ,qeFrom = [TRSimple [Name Nothing "t"]] } ) ,("select a, sum(c+d) as s\n\ \ from t,u\n\ \ where a > 5\n\ \ group by a\n\ \ having count(1) > 5\n\ \ order by s" ,makeSelect {qeSelectList = [(Iden [Name Nothing "a"], Nothing) ,(App [Name Nothing "sum"] [BinOp (Iden [Name Nothing "c"]) [Name Nothing "+"] (Iden [Name Nothing "d"])] ,Just $ Name Nothing "s")] ,qeFrom = [TRSimple [Name Nothing "t"], TRSimple [Name Nothing "u"]] ,qeWhere = Just $ BinOp (Iden [Name Nothing "a"]) [Name Nothing ">"] (NumLit "5") ,qeGroupBy = [SimpleGroup $ Iden [Name Nothing "a"]] ,qeHaving = Just $ BinOp (App [Name Nothing "count"] [NumLit "1"]) [Name Nothing ">"] (NumLit "5") ,qeOrderBy = [SortSpec (Iden [Name Nothing "s"]) DirDefault NullsOrderDefault] } ) ]