Parse constraints not separated by comma
This commit is contained in:
parent
d8b32c0931
commit
51157d502e
|
@ -1509,12 +1509,17 @@ TODO: change style
|
|||
> CreateSchema <$> names
|
||||
|
||||
> createTable :: Parser Statement
|
||||
> createTable = keyword_ "table" >>
|
||||
> createTable = do
|
||||
> let
|
||||
> parseColumnDef = TableColumnDef <$> columnDef
|
||||
> parseConstraintDef = uncurry TableConstraintDef <$> tableConstraintDef
|
||||
> constraints = sepBy parseConstraintDef (optional comma)
|
||||
> entries = ((:) <$> parseColumnDef <*> ((comma >> entries) <|> pure [])) <|> constraints
|
||||
>
|
||||
> keyword_ "table" >>
|
||||
> CreateTable
|
||||
> <$> names
|
||||
> -- todo: is this order mandatory or is it a perm?
|
||||
> <*> parens (commaSep1 (uncurry TableConstraintDef <$> tableConstraintDef
|
||||
> <|> TableColumnDef <$> columnDef))
|
||||
> <*> parens entries
|
||||
|
||||
> createIndex :: Parser Statement
|
||||
> createIndex =
|
||||
|
|
|
@ -6,6 +6,7 @@ stdenv.mkDerivation rec {
|
|||
ghc
|
||||
cabal-install
|
||||
glibcLocales
|
||||
gnumake
|
||||
];
|
||||
shellHook = "export LANG=en_GB.UTF-8";
|
||||
}
|
||||
|
|
|
@ -651,6 +651,28 @@ defintely skip
|
|||
> DefaultReferentialAction DefaultReferentialAction
|
||||
> ])
|
||||
|
||||
> ,(TestStatement ansi2011
|
||||
> "create table t (a int, b int,\n\
|
||||
> \ foreign key (a) references u(c)\n\
|
||||
> \ foreign key (b) references v(d));"
|
||||
> $ CreateTable [Name Nothing "t"]
|
||||
> [TableColumnDef $ ColumnDef (Name Nothing "a") (TypeName [Name Nothing "int"]) Nothing []
|
||||
> ,TableColumnDef $ ColumnDef (Name Nothing "b") (TypeName [Name Nothing "int"]) Nothing []
|
||||
> ,TableConstraintDef Nothing $
|
||||
> TableReferencesConstraint
|
||||
> [Name Nothing "a"]
|
||||
> [Name Nothing "u"]
|
||||
> (Just [Name Nothing "c"])
|
||||
> DefaultReferenceMatch
|
||||
> DefaultReferentialAction DefaultReferentialAction
|
||||
> ,TableConstraintDef Nothing $
|
||||
> TableReferencesConstraint
|
||||
> [Name Nothing "b"]
|
||||
> [Name Nothing "v"]
|
||||
> (Just [Name Nothing "d"])
|
||||
> DefaultReferenceMatch
|
||||
> DefaultReferentialAction DefaultReferentialAction
|
||||
> ])
|
||||
|
||||
|
||||
<references specification> ::=
|
||||
|
|
Loading…
Reference in a new issue