This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new a31786e20a remove old unimplemented() for scientific notaion (#6142)
a31786e20a is described below
commit a31786e20a5bed6c27630fc3d65da52fea8ea423
Author: Yongting You <[email protected]>
AuthorDate: Fri Apr 28 07:39:50 2023 -0700
remove old unimplemented() for scientific notaion (#6142)
---
.../core/tests/sqllogictests/test_files/scalar.slt | 37 ++++++++++++++++++++++
datafusion/sql/src/expr/value.rs | 9 +-----
2 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/datafusion/core/tests/sqllogictests/test_files/scalar.slt
b/datafusion/core/tests/sqllogictests/test_files/scalar.slt
index 7583600802..12248f894f 100644
--- a/datafusion/core/tests/sqllogictests/test_files/scalar.slt
+++ b/datafusion/core/tests/sqllogictests/test_files/scalar.slt
@@ -820,3 +820,40 @@ drop table test_boolean
statement ok
drop table test_int32
+
+# scientific notation (0s)
+query RRRR
+SELECT 0e0 AS c1, 0.e-0 AS c2, -.0e+0 AS c3, 00.00e-00 AS c4
+----
+0 0 0 0
+
+# scientific notation (integer)
+query RRRR
+SELECT -1e-1, 0e100, 10E-2, 1E+0;
+----
+-0.1 0 0.1 1
+
+# scientific notation (decimal)
+query RRRR
+SELECT -1.5e-1, 00.0e1, 150.0E-3, 0.015E+2;
+----
+-0.15 0 0.15 1.5
+
+# scientific notation (integer or decimal part only)
+query RRRR
+SELECT -2.e-1, 0.e0, .0002E+3, .02E+2;
+----
+-0.2 0 0.2 2
+
+# scientific notation (overflows)
+# FLOAT64 range: -1.79E+308 to -2.22E-308, or from 2.22E-308 to 1.79E+308
+query RRRR
+SELECT -1.79e309, -2.22e-309, 2.22E-309, 1.79E+309;
+----
+-Infinity 0 0 Infinity
+
+# scientific notation (other edgecases)
+query IRRR
+SELECT 1ea, 1e-2a, 1E-2-2, 1E-1e2;
+----
+1 0.01 -1.99 0.1
diff --git a/datafusion/sql/src/expr/value.rs b/datafusion/sql/src/expr/value.rs
index c936313e20..df9e44be3f 100644
--- a/datafusion/sql/src/expr/value.rs
+++ b/datafusion/sql/src/expr/value.rs
@@ -47,14 +47,7 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
/// Parse number in sql string, convert to Expr::Literal
fn parse_sql_number(&self, n: &str) -> Result<Expr> {
- if n.find('E').is_some() {
- // not implemented yet
- // https://github.com/apache/arrow-datafusion/issues/3448
- Err(DataFusionError::NotImplemented(
- "sql numeric literals in scientific notation are not supported"
- .to_string(),
- ))
- } else if let Ok(n) = n.parse::<i64>() {
+ if let Ok(n) = n.parse::<i64>() {
Ok(lit(n))
} else if self.options.parse_float_as_decimal {
// remove leading zeroes