@@ -40,7 +40,7 @@ pub enum DataType {
4040 /// Variable-length character type e.g. VARCHAR(10)
4141 Varchar ( Option < CharacterLength > ) ,
4242 /// Variable-length character type e.g. NVARCHAR(10)
43- Nvarchar ( Option < u64 > ) ,
43+ Nvarchar ( Option < CharacterLength > ) ,
4444 /// Uuid type
4545 Uuid ,
4646 /// Large character object with optional length e.g. CHARACTER LARGE OBJECT, CHARACTER LARGE OBJECT(1000), [standard]
@@ -238,9 +238,7 @@ impl fmt::Display for DataType {
238238
239239 DataType :: CharVarying ( size) => format_character_string_type ( f, "CHAR VARYING" , size) ,
240240 DataType :: Varchar ( size) => format_character_string_type ( f, "VARCHAR" , size) ,
241- DataType :: Nvarchar ( size) => {
242- format_type_with_optional_length ( f, "NVARCHAR" , size, false )
243- }
241+ DataType :: Nvarchar ( size) => format_character_string_type ( f, "NVARCHAR" , size) ,
244242 DataType :: Uuid => write ! ( f, "UUID" ) ,
245243 DataType :: CharacterLargeObject ( size) => {
246244 format_type_with_optional_length ( f, "CHARACTER LARGE OBJECT" , size, false )
@@ -349,7 +347,8 @@ impl fmt::Display for DataType {
349347 DataType :: Bytea => write ! ( f, "BYTEA" ) ,
350348 DataType :: Array ( ty) => match ty {
351349 ArrayElemTypeDef :: None => write ! ( f, "ARRAY" ) ,
352- ArrayElemTypeDef :: SquareBracket ( t) => write ! ( f, "{t}[]" ) ,
350+ ArrayElemTypeDef :: SquareBracket ( t, None ) => write ! ( f, "{t}[]" ) ,
351+ ArrayElemTypeDef :: SquareBracket ( t, Some ( size) ) => write ! ( f, "{t}[{size}]" ) ,
353352 ArrayElemTypeDef :: AngleBracket ( t) => write ! ( f, "ARRAY<{t}>" ) ,
354353 } ,
355354 DataType :: Custom ( ty, modifiers) => {
@@ -592,6 +591,6 @@ pub enum ArrayElemTypeDef {
592591 None ,
593592 /// `ARRAY<INT>`
594593 AngleBracket ( Box < DataType > ) ,
595- /// `[] INT`
596- SquareBracket ( Box < DataType > ) ,
594+ /// `INT[]` or ` INT[2] `
595+ SquareBracket ( Box < DataType > , Option < u64 > ) ,
597596}
0 commit comments