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 <87313068+zhangstar...@users.noreply.github.com> 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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org