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"]}