mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-20 12:49:47 +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)
|
/// Variable-length character type e.g. VARCHAR(10)
|
||||||
Varchar(Option<CharacterLength>),
|
Varchar(Option<CharacterLength>),
|
||||||
/// Variable-length character type e.g. NVARCHAR(10)
|
/// Variable-length character type e.g. NVARCHAR(10)
|
||||||
Nvarchar(Option<u64>),
|
Nvarchar(Option<CharacterLength>),
|
||||||
/// Uuid type
|
/// Uuid type
|
||||||
Uuid,
|
Uuid,
|
||||||
/// Large character object with optional length e.g. CHARACTER LARGE OBJECT, CHARACTER LARGE OBJECT(1000), [standard]
|
/// 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::CharVarying(size) => format_character_string_type(f, "CHAR VARYING", size),
|
||||||
DataType::Varchar(size) => format_character_string_type(f, "VARCHAR", size),
|
DataType::Varchar(size) => format_character_string_type(f, "VARCHAR", size),
|
||||||
DataType::Nvarchar(size) => {
|
DataType::Nvarchar(size) => format_character_string_type(f, "NVARCHAR", size),
|
||||||
format_type_with_optional_length(f, "NVARCHAR", size, false)
|
|
||||||
}
|
|
||||||
DataType::Uuid => write!(f, "UUID"),
|
DataType::Uuid => write!(f, "UUID"),
|
||||||
DataType::CharacterLargeObject(size) => {
|
DataType::CharacterLargeObject(size) => {
|
||||||
format_type_with_optional_length(f, "CHARACTER LARGE OBJECT", size, false)
|
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::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 => {
|
Keyword::CHARACTER => {
|
||||||
if self.parse_keyword(Keyword::VARYING) {
|
if self.parse_keyword(Keyword::VARYING) {
|
||||||
Ok(DataType::CharacterVarying(
|
Ok(DataType::CharacterVarying(
|
||||||
|
|
|
@ -2258,7 +2258,10 @@ fn parse_cast() {
|
||||||
&Expr::Cast {
|
&Expr::Cast {
|
||||||
kind: CastKind::Cast,
|
kind: CastKind::Cast,
|
||||||
expr: Box::new(Expr::Identifier(Ident::new("id"))),
|
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,
|
format: None,
|
||||||
},
|
},
|
||||||
expr_from_projection(only(&select.projection))
|
expr_from_projection(only(&select.projection))
|
||||||
|
|
|
@ -431,6 +431,7 @@ fn parse_for_json_expect_ast() {
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_cast_varchar_max() {
|
fn parse_cast_varchar_max() {
|
||||||
ms_and_generic().verified_expr("CAST('foo' AS VARCHAR(MAX))");
|
ms_and_generic().verified_expr("CAST('foo' AS VARCHAR(MAX))");
|
||||||
|
ms_and_generic().verified_expr("CAST('foo' AS NVARCHAR(MAX))");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue