packages feed

hssqlppp-0.6.2: tests/Database/HsSqlPpp/Tests/Parsing/MiscQueryExprs.lhs


> {-# LANGUAGE QuasiQuotes,OverloadedStrings #-}
>
> module Database.HsSqlPpp.Tests.Parsing.MiscQueryExprs (miscQueryExprs) where
>
> --import Database.HsSqlPpp.Utils.Here
>
> import Database.HsSqlPpp.Syntax
> import Database.HsSqlPpp.Dialect

> import Database.HsSqlPpp.Tests.Parsing.Utils
> import Database.HsSqlPpp.Tests.TestTypes

> miscQueryExprs:: Item
> miscQueryExprs =
>    Group "misc select statements"
>    [s "select 1;"
>     $ makeSelect {selSelectList = sl [si $ num "1"]}
>    ,s "select a from t;" $ tblat
>    ,s "select distinct a from t;" $ tblat {selDistinct = Distinct}
>    ,s "select a from t where b=2;"
>       $ tblat {selWhere = Just $ binop "=" (ei "b") (num "2")}
>    ,s "select a from t where b=2 and c=3;"
>       $ tblat {selWhere = Just $ binop "and"
>                           (binop "=" (ei "b") (num "2"))
>                           (binop "=" (ei "c") (num "3"))}
>    ,s "SELECT T.A::INT FROM TBL AS T;"
>     $ makeSelect
>      {selSelectList = sl [si $ Cast ea (eqi "T" "A")
>                                  (st "INT")]
>      ,selTref = [trefa "TBL" "T"]}
>    ,s "select a from t order by a;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsDefault)]}
>    ,s "select a from t order by a asc;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsDefault)]}
>    ,s "select a from t order by a desc;"
>     $ tblat {selOrderBy = [(ei "a",Desc, NullsDefault)]}
>    ,s "select a from t order by a,b;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsDefault)
>                           ,(ei "b",Asc, NullsDefault)]}
>    ,s "select a from t order by a asc,b;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsDefault)
>                           ,(ei "b",Asc, NullsDefault)]}
>    ,s "select a from t order by a desc,b;"
>     $ tblat {selOrderBy = [(ei "a",Desc, NullsDefault)
>                           ,(ei "b",Asc, NullsDefault)]}
>    ,s "select a from t order by a desc,b desc;"
>     $ tblat {selOrderBy = [(ei "a",Desc, NullsDefault)
>                           ,(ei "b",Desc, NullsDefault)]}
>    ,s "select a from t order by a nulls first;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsFirst)]}
>    ,s "select a from t order by a nulls last;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsLast)]}
>    ,s "select a from t order by a asc nulls first;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsFirst)]}
>    ,s "select a from t order by a asc nulls last;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsLast)]}
>    ,s "select a from t order by a desc nulls first;"
>     $ tblat {selOrderBy = [(ei "a",Desc, NullsFirst)]}
>    ,s "select a from t order by a desc nulls last;"
>     $ tblat {selOrderBy = [(ei "a",Desc, NullsLast)]}
>    ,s "select a from t limit 1;"
>     $ tblat {selLimit = Just $ num "1"}
>    ,s "select a from t offset 1;"
>     $ tblat {selOffset = Just $ num "1"}
>    ,s "select a from t order by a limit 1 offset 1;"
>     $ tblat {selOrderBy = [(ei "a",Asc, NullsDefault)]
>             ,selLimit = Just $ num "1"
>             ,selOffset = Just $ num "1"}
>    ,s "select (p).x, (p).y from pos;"
>           $ makeSelect
>                   {selSelectList = sl [si $ parenQual (ei "p") (ei "x")
>                                       ,si $ parenQual (ei "p") (ei "y")]
>                   ,selTref = [tref "pos"]}
>    ,s "select ($1).x, ($1).y from pos;"
>           $ makeSelect
>                   {selSelectList = sl
>                    [si $ member (Parens ea $ PositionalArg ea 1) (ei "x")
>                    ,si $ member (Parens ea $ PositionalArg ea 1) (ei "y")]
>                   ,selTref = [tref "pos"]}
>   ,s "select right ('test string',5) from t;"
>      $ makeSelect
>            {selSelectList = sl [si $ App ea (name "right") [stringQ "test string",num "5"]]
>            ,selTref = [tref "t"]}
>    ]
>  where
>    s = ParseQueryExpr defaultParseFlags {pfDialect = postgresDialect}
>    tblat = makeSelect
>            {selSelectList = sl [si $ ei "a"]
>            ,selTref = [tref "t"]}