mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-12 08:56:20 +00:00
feature!: added NUMERIC and DEC ANSI data types, and now the DECIMAL (#695)
type prints DECIMAL instead of NUMERIC. BREAKING CHANGE: enum DATA TYPE variants changed, changing any API that uses it.
This commit is contained in:
parent
f0646c8c1a
commit
1b3778e2d5
4 changed files with 65 additions and 31 deletions
|
@ -3645,7 +3645,13 @@ impl<'a> Parser<'a> {
|
|||
Keyword::STRING => Ok(DataType::String),
|
||||
Keyword::TEXT => Ok(DataType::Text),
|
||||
Keyword::BYTEA => Ok(DataType::Bytea),
|
||||
Keyword::NUMERIC | Keyword::DECIMAL | Keyword::DEC => Ok(DataType::Decimal(
|
||||
Keyword::NUMERIC => Ok(DataType::Numeric(
|
||||
self.parse_exact_number_optional_precision_scale()?,
|
||||
)),
|
||||
Keyword::DECIMAL => Ok(DataType::Decimal(
|
||||
self.parse_exact_number_optional_precision_scale()?,
|
||||
)),
|
||||
Keyword::DEC => Ok(DataType::Dec(
|
||||
self.parse_exact_number_optional_precision_scale()?,
|
||||
)),
|
||||
Keyword::ENUM => Ok(DataType::Enum(self.parse_string_values()?)),
|
||||
|
@ -5784,19 +5790,47 @@ mod tests {
|
|||
dialects: vec![Box::new(GenericDialect {}), Box::new(AnsiDialect {})],
|
||||
};
|
||||
|
||||
test_parse_data_type!(dialect, "NUMERIC", DataType::Decimal(ExactNumberInfo::None));
|
||||
test_parse_data_type!(dialect, "NUMERIC", DataType::Numeric(ExactNumberInfo::None));
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"NUMERIC(2)",
|
||||
DataType::Decimal(ExactNumberInfo::Precision(2))
|
||||
DataType::Numeric(ExactNumberInfo::Precision(2))
|
||||
);
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"NUMERIC(2,10)",
|
||||
DataType::Numeric(ExactNumberInfo::PrecisionAndScale(2, 10))
|
||||
);
|
||||
|
||||
test_parse_data_type!(dialect, "DECIMAL", DataType::Decimal(ExactNumberInfo::None));
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"DECIMAL(2)",
|
||||
DataType::Decimal(ExactNumberInfo::Precision(2))
|
||||
);
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"DECIMAL(2,10)",
|
||||
DataType::Decimal(ExactNumberInfo::PrecisionAndScale(2, 10))
|
||||
);
|
||||
|
||||
test_parse_data_type!(dialect, "DEC", DataType::Dec(ExactNumberInfo::None));
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"DEC(2)",
|
||||
DataType::Dec(ExactNumberInfo::Precision(2))
|
||||
);
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"DEC(2,10)",
|
||||
DataType::Dec(ExactNumberInfo::PrecisionAndScale(2, 10))
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue