diff --git a/src/sqlparser.rs b/src/sqlparser.rs index 41ca2561..12a4bf34 100644 --- a/src/sqlparser.rs +++ b/src/sqlparser.rs @@ -1118,7 +1118,7 @@ impl Parser { } } "BYTEA" => Ok(SQLType::Bytea), - "NUMERIC" => { + "NUMERIC" | "DECIMAL" | "DEC" => { let (precision, scale) = self.parse_optional_precision_scale()?; Ok(SQLType::Decimal(precision, scale)) } diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index 56a5bff3..27aee3a2 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -716,6 +716,18 @@ fn parse_cast() { "SELECT CAST(id AS BIGINT) FROM customer", "SELECT CAST(id AS bigint) FROM customer", ); + + verified_stmt("SELECT CAST(id AS numeric) FROM customer"); + + one_statement_parses_to( + "SELECT CAST(id AS dec) FROM customer", + "SELECT CAST(id AS numeric) FROM customer", + ); + + one_statement_parses_to( + "SELECT CAST(id AS decimal) FROM customer", + "SELECT CAST(id AS numeric) FROM customer", + ); } #[test]