add support for nulls first/last
This commit is contained in:
parent
e85ab8b831
commit
ebe522b21d
7 changed files with 66 additions and 34 deletions
tools/Language/SQL/SimpleSQL
|
@ -33,7 +33,7 @@ Some tests for parsing full queries.
|
|||
> ,qeGroupBy = [Iden "a"]
|
||||
> ,qeHaving = Just $ BinOp (App "count" [NumLit "1"])
|
||||
> ">" (NumLit "5")
|
||||
> ,qeOrderBy = [(Iden "s", Asc)]
|
||||
> ,qeOrderBy = [OrderField (Iden "s") Asc NullsOrderDefault]
|
||||
> }
|
||||
> )
|
||||
> ]
|
||||
|
|
|
@ -108,16 +108,23 @@ These are a few misc tests which don't fit anywhere else.
|
|||
> orderBy :: TestItem
|
||||
> orderBy = Group "orderBy" $ map (uncurry TestQueryExpr)
|
||||
> [("select a from t order by a"
|
||||
> ,ms [(Iden "a", Asc)])
|
||||
> ,ms [OrderField (Iden "a") Asc NullsOrderDefault])
|
||||
|
||||
> ,("select a from t order by a, b"
|
||||
> ,ms [(Iden "a", Asc), (Iden "b", Asc)])
|
||||
> ,ms [OrderField (Iden "a") Asc NullsOrderDefault
|
||||
> ,OrderField (Iden "b") Asc NullsOrderDefault])
|
||||
|
||||
> ,("select a from t order by a asc"
|
||||
> ,ms [(Iden "a", Asc)])
|
||||
> ,ms [OrderField (Iden "a") Asc NullsOrderDefault])
|
||||
|
||||
> ,("select a from t order by a desc, b desc"
|
||||
> ,ms [(Iden "a", Desc), (Iden "b", Desc)])
|
||||
> ,ms [OrderField (Iden "a") Desc NullsOrderDefault
|
||||
> ,OrderField (Iden "b") Desc NullsOrderDefault])
|
||||
|
||||
> ,("select a from t order by a desc nulls first, b desc nulls last"
|
||||
> ,ms [OrderField (Iden "a") Desc NullsFirst
|
||||
> ,OrderField (Iden "b") Desc NullsLast])
|
||||
|
||||
> ]
|
||||
> where
|
||||
> ms o = makeSelect {qeSelectList = [(Nothing,Iden "a")]
|
||||
|
|
|
@ -213,7 +213,7 @@ Tests for parsing scalar expressions
|
|||
> [("count(*)",App "count" [Star])
|
||||
|
||||
> ,("sum(a order by a)"
|
||||
> ,AggregateApp "sum" Nothing [Iden "a"] [(Iden "a", Asc)])
|
||||
> ,AggregateApp "sum" Nothing [Iden "a"] [(OrderField (Iden "a") Asc NullsOrderDefault)])
|
||||
|
||||
> ,("sum(all a)"
|
||||
> ,AggregateApp "sum" (Just All) [Iden "a"] [])
|
||||
|
@ -234,37 +234,37 @@ Tests for parsing scalar expressions
|
|||
> ,WindowApp "max" [Iden "a"] [Iden "b",Iden "c"] [] Nothing)
|
||||
|
||||
> ,("sum(a) over (order by b)"
|
||||
> ,WindowApp "sum" [Iden "a"] [] [(Iden "b", Asc)] Nothing)
|
||||
> ,WindowApp "sum" [Iden "a"] [] [(OrderField (Iden "b") Asc NullsOrderDefault)] Nothing)
|
||||
|
||||
> ,("sum(a) over (order by b desc,c)"
|
||||
> ,WindowApp "sum" [Iden "a"] [] [(Iden "b", Desc)
|
||||
> ,(Iden "c", Asc)] Nothing)
|
||||
> ,WindowApp "sum" [Iden "a"] [] [(OrderField (Iden "b") Desc NullsOrderDefault)
|
||||
> ,(OrderField (Iden "c") Asc NullsOrderDefault)] Nothing)
|
||||
|
||||
> ,("sum(a) over (partition by b order by c)"
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [(Iden "c", Asc)] Nothing)
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [OrderField (Iden "c") Asc NullsOrderDefault] Nothing)
|
||||
|
||||
> ,("sum(a) over (partition by b order by c range unbounded preceding)"
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [(Iden "c", Asc)]
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [OrderField (Iden "c") Asc NullsOrderDefault]
|
||||
> $ Just $ FrameFrom FrameRange UnboundedPreceding)
|
||||
|
||||
> ,("sum(a) over (partition by b order by c range 5 preceding)"
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [(Iden "c", Asc)]
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [OrderField (Iden "c") Asc NullsOrderDefault]
|
||||
> $ Just $ FrameFrom FrameRange $ Preceding (NumLit "5"))
|
||||
|
||||
> ,("sum(a) over (partition by b order by c range current row)"
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [(Iden "c", Asc)]
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [OrderField (Iden "c") Asc NullsOrderDefault]
|
||||
> $ Just $ FrameFrom FrameRange Current)
|
||||
|
||||
> ,("sum(a) over (partition by b order by c rows 5 following)"
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [(Iden "c", Asc)]
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [OrderField (Iden "c") Asc NullsOrderDefault]
|
||||
> $ Just $ FrameFrom FrameRows $ Following (NumLit "5"))
|
||||
|
||||
> ,("sum(a) over (partition by b order by c range unbounded following)"
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [(Iden "c", Asc)]
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [OrderField (Iden "c") Asc NullsOrderDefault]
|
||||
> $ Just $ FrameFrom FrameRange UnboundedFollowing)
|
||||
|
||||
> ,("sum(a) over (partition by b order by c range between 5 preceding and 5 following)"
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [(Iden "c", Asc)]
|
||||
> ,WindowApp "sum" [Iden "a"] [Iden "b"] [OrderField (Iden "c") Asc NullsOrderDefault]
|
||||
> $ Just $ FrameBetween FrameRange (Preceding (NumLit "5")) (Following (NumLit "5")))
|
||||
|
||||
> ]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue