mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-26 17:04:10 +00:00
fix: Add support for MAX
for NVARCHAR
(#1232)
This commit is contained in:
parent
547c5cde14
commit
b51f2a0c25
4 changed files with 10 additions and 6 deletions
|
@ -40,7 +40,7 @@ pub enum DataType {
|
|||
/// Variable-length character type e.g. VARCHAR(10)
|
||||
Varchar(Option<CharacterLength>),
|
||||
/// Variable-length character type e.g. NVARCHAR(10)
|
||||
Nvarchar(Option<u64>),
|
||||
Nvarchar(Option<CharacterLength>),
|
||||
/// Uuid type
|
||||
Uuid,
|
||||
/// 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 {
|
|||
|
||||
DataType::CharVarying(size) => format_character_string_type(f, "CHAR VARYING", size),
|
||||
DataType::Varchar(size) => format_character_string_type(f, "VARCHAR", size),
|
||||
DataType::Nvarchar(size) => {
|
||||
format_type_with_optional_length(f, "NVARCHAR", size, false)
|
||||
}
|
||||
DataType::Nvarchar(size) => format_character_string_type(f, "NVARCHAR", size),
|
||||
DataType::Uuid => write!(f, "UUID"),
|
||||
DataType::CharacterLargeObject(size) => {
|
||||
format_type_with_optional_length(f, "CHARACTER LARGE OBJECT", size, false)
|
||||
|
|
|
@ -6451,7 +6451,9 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
}
|
||||
Keyword::VARCHAR => Ok(DataType::Varchar(self.parse_optional_character_length()?)),
|
||||
Keyword::NVARCHAR => Ok(DataType::Nvarchar(self.parse_optional_precision()?)),
|
||||
Keyword::NVARCHAR => {
|
||||
Ok(DataType::Nvarchar(self.parse_optional_character_length()?))
|
||||
}
|
||||
Keyword::CHARACTER => {
|
||||
if self.parse_keyword(Keyword::VARYING) {
|
||||
Ok(DataType::CharacterVarying(
|
||||
|
|
|
@ -2258,7 +2258,10 @@ fn parse_cast() {
|
|||
&Expr::Cast {
|
||||
kind: CastKind::Cast,
|
||||
expr: Box::new(Expr::Identifier(Ident::new("id"))),
|
||||
data_type: DataType::Nvarchar(Some(50)),
|
||||
data_type: DataType::Nvarchar(Some(CharacterLength::IntegerLength {
|
||||
length: 50,
|
||||
unit: None,
|
||||
})),
|
||||
format: None,
|
||||
},
|
||||
expr_from_projection(only(&select.projection))
|
||||
|
|
|
@ -431,6 +431,7 @@ fn parse_for_json_expect_ast() {
|
|||
#[test]
|
||||
fn parse_cast_varchar_max() {
|
||||
ms_and_generic().verified_expr("CAST('foo' AS VARCHAR(MAX))");
|
||||
ms_and_generic().verified_expr("CAST('foo' AS NVARCHAR(MAX))");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue