1
Fork 0

Allow not specifying types for column defs

This commit is contained in:
prescientmoon 2024-09-02 18:25:37 +02:00
parent 39c8e05224
commit 424211b49a
Signed by: prescientmoon
SSH key fingerprint: SHA256:WFp/cO76nbarETAoQcQXuV+0h7XJsEsOCI0UsyPIy6U
6 changed files with 63 additions and 50 deletions

View file

@ -98,6 +98,8 @@ data Dialect = Dialect
,diNonCommaSeparatedConstraints :: Bool
-- | allow marking tables as "without rowid"
,diWithoutRowidTables :: Bool
-- | allow omitting types for columns
,diOptionalColumnTypes :: Bool
}
deriving (Eq,Show,Read,Data,Typeable)
@ -123,6 +125,7 @@ ansi2011 = Dialect {diKeywords = ansi2011ReservedKeywords
,diAutoincrement = False
,diNonCommaSeparatedConstraints = False
,diWithoutRowidTables = False
,diOptionalColumnTypes = False
}
-- | mysql dialect

View file

@ -1737,9 +1737,12 @@ createIndex =
<*> parens (commaSep1 (name "column name"))
columnDef :: Parser ColumnDef
columnDef = ColumnDef <$> name "column name" <*> typeName
<*> optional defaultClause
<*> option [] (some colConstraintDef)
columnDef = do
optionalType <- askDialect diOptionalColumnTypes
ColumnDef <$> name "column name"
<*> (if optionalType then optional typeName else Just <$> typeName)
<*> optional defaultClause
<*> option [] (some colConstraintDef)
where
defaultClause = label "column default clause" $ choice [
keyword_ "default" >>

View file

@ -700,7 +700,7 @@ dropBehav Restrict = pretty "restrict"
columnDef :: Dialect -> ColumnDef -> Doc a
columnDef d (ColumnDef n t mdef cons) =
name n <+> typeName t
name n <+> maybe mempty typeName t
<+> case mdef of
Nothing -> mempty
Just (DefaultClause def) ->

View file

@ -553,7 +553,7 @@ data TableElement =
| TableConstraintDef (Maybe [Name]) TableConstraint
deriving (Eq,Show,Read,Data,Typeable)
data ColumnDef = ColumnDef Name TypeName
data ColumnDef = ColumnDef Name (Maybe TypeName)
(Maybe DefaultClause)
[ColConstraintDef]
-- (Maybe CollateClause)