support simple interval literal interval '3 days' and rename CastOp to TypedLit
This commit is contained in:
parent
939189a04f
commit
045f2be825
7 changed files with 18 additions and 12 deletions
Language/SQL/SimpleSQL
|
@ -107,7 +107,7 @@ the fixity code.
|
|||
> ,HSE.List $ map (ltoh . (\(a,b) -> [a,b])) ts
|
||||
> ,ltoh $ maybeToList el])
|
||||
> Cast e0 tn -> HSE.App (str ('c':show tn)) $ toHaskell e0
|
||||
> CastOp {} -> str ('v':show e)
|
||||
> TypedLit {} -> str ('v':show e)
|
||||
> SubQueryExpr {} -> str ('v': show e)
|
||||
> In b e0 (InList l) ->
|
||||
> HSE.App (str ('i':show b))
|
||||
|
|
|
@ -99,12 +99,16 @@ interval '5' day (3)
|
|||
or
|
||||
interval '5' month
|
||||
|
||||
wrap the whole lot in try, in case we get something like this:
|
||||
interval '3 days'
|
||||
which parses as a typed literal
|
||||
|
||||
> interval :: P ScalarExpr
|
||||
> interval = try (keyword_ "interval") >>
|
||||
> interval = try (keyword_ "interval" >>
|
||||
> IntervalLit
|
||||
> <$> stringLiteral
|
||||
> <*> identifierString
|
||||
> <*> optionMaybe (try $ parens integerLiteral)
|
||||
> <*> optionMaybe (try $ parens integerLiteral))
|
||||
|
||||
> literal :: P ScalarExpr
|
||||
> literal = number <|> estring <|> interval
|
||||
|
@ -210,7 +214,7 @@ cast: cast(expr as type)
|
|||
> parensCast = try (keyword_ "cast") >>
|
||||
> parens (Cast <$> scalarExpr'
|
||||
> <*> (keyword_ "as" *> typeName))
|
||||
> prefixCast = try (CastOp <$> typeName
|
||||
> prefixCast = try (TypedLit <$> typeName
|
||||
> <*> stringLiteral)
|
||||
|
||||
extract(id from expr)
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
> ,text "as"
|
||||
> ,text tn])
|
||||
|
||||
> scalarExpr (CastOp (TypeName tn) s) =
|
||||
> scalarExpr (TypedLit (TypeName tn) s) =
|
||||
> text tn <+> quotes (text s)
|
||||
|
||||
> scalarExpr (SubQueryExpr ty qe) =
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
> -- | cast(a as typename)
|
||||
> | Cast ScalarExpr TypeName
|
||||
> -- | prefix 'typed literal', e.g. int '42'
|
||||
> | CastOp TypeName String
|
||||
> | TypedLit TypeName String
|
||||
> -- | exists, all, any, some subqueries
|
||||
> | SubQueryExpr SubQueryExprType QueryExpr
|
||||
> -- | in list literal and in subquery, if the bool is false it
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue