1
Fork 0

add generation clause support to create table

This commit is contained in:
Jake Wheat 2015-08-02 18:14:45 +03:00
parent e495e240c0
commit 4f80ec96d4
4 changed files with 16 additions and 1 deletions

View file

@ -1472,6 +1472,9 @@ TODO: change style
> defaultClause = choice [
> keyword_ "default" >>
> DefaultClause <$> valueExpr
> -- todo: left factor
> ,try (keywords_ ["generated","always","as"] >>
> GenerationClause <$> parens valueExpr)
> ,keyword_ "generated" >>
> IdentityColumnSpec
> <$> option GeneratedDefault

View file

@ -463,6 +463,8 @@ which have been changed to try to improve the layout of the output.
> Nothing -> empty
> Just (DefaultClause def) ->
> text "default" <+> valueExpr d def
> Just (GenerationClause e) ->
> texts ["generated","always","as"] <+> parens (valueExpr d e)
> Just (IdentityColumnSpec w o) ->
> text "generated"
> <+> (case w of

View file

@ -504,7 +504,7 @@ I'm not sure if this is valid syntax or not.
> data DefaultClause =
> DefaultClause ValueExpr
> | IdentityColumnSpec IdentityWhen [SequenceGeneratorOption]
> -- | GenerationClause
> | GenerationClause ValueExpr
> deriving (Eq,Show,Read,Data,Typeable)
> data IdentityWhen =

View file

@ -356,6 +356,16 @@ generated always (valueexpr)
<generation expression> ::=
<left paren> <value expression> <right paren>
> ,(TestStatement SQL2011
> "create table t (a int, \
> \ a2 int generated always as (a * 2));"
> $ CreateTable [Name "t"]
> [ColumnDef (Name "a") (TypeName [Name "int"]) Nothing
> ,ColumnDef (Name "a2") (TypeName [Name "int"])
> (Just $ GenerationClause
> (BinOp (Iden [Name "a"]) [Name "*"] (NumLit "2")))])
11.5 <default clause>