This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new ddfdf62993 [opt](planner) support to parse scientific notation(aEb)
(#22248)
ddfdf62993 is described below
commit ddfdf62993603fd2bd03108b505f393c7baf0388
Author: zhangstar333 <[email protected]>
AuthorDate: Thu Jul 27 13:31:37 2023 +0800
[opt](planner) support to parse scientific notation(aEb) (#22248)
---
fe/fe-core/src/main/jflex/sql_scanner.flex | 14 +++++++++++++-
.../data/datatype_p0/decimalv3/test_decimalv3.out | 18 ++++++++++++++++++
.../suites/datatype_p0/decimalv3/test_decimalv3.groovy | 8 ++++++++
3 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/fe/fe-core/src/main/jflex/sql_scanner.flex
b/fe/fe-core/src/main/jflex/sql_scanner.flex
index c2cae6532f..62e7c6f339 100644
--- a/fe/fe-core/src/main/jflex/sql_scanner.flex
+++ b/fe/fe-core/src/main/jflex/sql_scanner.flex
@@ -634,7 +634,8 @@ FLit1 = [0-9]+ \. [0-9]*
FLit2 = \. [0-9]+
FLit3 = [0-9]+
Exponent = [eE] [+-]? [0-9]+
-DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}?
+DoubleLiteral = ({FLit1}|{FLit2}|{FLit3})
+ExponentLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}
EolHintBegin = "--" " "* "+"
CommentedHintBegin = "/*" " "* "+"
@@ -697,6 +698,17 @@ EndOfLineComment = "--"
!({HintContent}|{ContainsLineTerminator}) {LineTerminato
"`" { return newToken(SqlParserSymbols.UNMATCHED_STRING_LITERAL, null); }
"?" { return newToken(SqlParserSymbols.PLACEHOLDER, null); }
+{ExponentLiteral} {
+ BigDecimal decimal_val;
+ try {
+ decimal_val = new BigDecimal(yytext());
+ } catch (NumberFormatException e) {
+ return newToken(SqlParserSymbols.NUMERIC_OVERFLOW, yytext());
+ }
+
+ return newToken(SqlParserSymbols.DECIMAL_LITERAL, decimal_val);
+}
+
{QuotedIdentifier} {
// Remove the quotes
String trimmedIdent = yytext().substring(1, yytext().length() - 1);
diff --git a/regression-test/data/datatype_p0/decimalv3/test_decimalv3.out
b/regression-test/data/datatype_p0/decimalv3/test_decimalv3.out
index f8d56b4c41..0482cc4164 100644
--- a/regression-test/data/datatype_p0/decimalv3/test_decimalv3.out
+++ b/regression-test/data/datatype_p0/decimalv3/test_decimalv3.out
@@ -5,3 +5,21 @@
-- !decimalv3 --
100.00000000000000000000
+-- !aEb_test1 --
+0
+
+-- !aEb_test2 --
+0.1
+
+-- !aEb_test3 --
+-0.01
+
+-- !aEb_test4 --
+101234560000
+
+-- !aEb_test5 --
+0.0123456789
+
+-- !aEb_test6 --
+1234450000
+
diff --git a/regression-test/suites/datatype_p0/decimalv3/test_decimalv3.groovy
b/regression-test/suites/datatype_p0/decimalv3/test_decimalv3.groovy
index 8b8b010240..2b72c36867 100644
--- a/regression-test/suites/datatype_p0/decimalv3/test_decimalv3.groovy
+++ b/regression-test/suites/datatype_p0/decimalv3/test_decimalv3.groovy
@@ -27,4 +27,12 @@ suite("test_decimalv3") {
qt_decimalv3 "select * from test5_v"
qt_decimalv3 "select cast(a as decimalv3(12,10)) * cast(b as
decimalv3(18,10)) from test5"
+
+ sql "set experimental_enable_nereids_planner =false;"
+ qt_aEb_test1 "select 0e0;"
+ qt_aEb_test2 "select 1e-1"
+ qt_aEb_test3 "select -1e-2"
+ qt_aEb_test4 "select 10.123456e10;"
+ qt_aEb_test5 "select 123456789e-10"
+ qt_aEb_test6 "select 0.123445e10;"
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]