This is an automated email from the ASF dual-hosted git repository.
chengzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 5a165256bea Support OpenGauss number numeric operators parse (#28329)
5a165256bea is described below
commit 5a165256beafb8babd1ba88fac799582ff808ab0
Author: Zichao <[email protected]>
AuthorDate: Fri Sep 1 14:31:44 2023 +1200
Support OpenGauss number numeric operators parse (#28329)
---
.../opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4 | 5 +++++
.../opengauss/src/main/antlr4/imports/opengauss/Symbol.g4 | 2 ++
test/it/parser/src/main/resources/case/dml/select.xml | 6 ++++++
.../parser/src/main/resources/sql/supported/dml/select.xml | 1 +
.../src/main/resources/sql/unsupported/unsupported.xml | 13 -------------
5 files changed, 14 insertions(+), 13 deletions(-)
diff --git
a/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
b/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
index 1e1491a7cc1..268d37b7f0c 100644
--- a/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
+++ b/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
@@ -584,6 +584,11 @@ aExpr
| aExpr MOD_ aExpr
| aExpr CARET_ aExpr
| aExpr AMPERSAND_ aExpr
+ | DN_ aExpr
+ | aExpr NOT_
+ | aExpr POUND_ aExpr
+ | TILDE_ aExpr
+ | CUBE_ROOT_ aExpr
| aExpr VERTICAL_BAR_ aExpr
| aExpr qualOp aExpr
| qualOp aExpr
diff --git
a/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/Symbol.g4
b/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/Symbol.g4
index 4aac8faf973..c4c5ec707f0 100644
--- a/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/Symbol.g4
+++ b/parser/sql/dialect/opengauss/src/main/antlr4/imports/opengauss/Symbol.g4
@@ -90,3 +90,5 @@ GEOMETRIC_PERPENDICULAR_: '?-|';
GEOMETRIC_SAME_AS_: '~=';
SIGNED_LEFT_SHIFT_E_: '<<=';
SIGNED_RIGHT_SHIFT_E_: '>>=';
+DN_: '!!';
+CUBE_ROOT_: '||/';
diff --git a/test/it/parser/src/main/resources/case/dml/select.xml
b/test/it/parser/src/main/resources/case/dml/select.xml
index 93a2758e5d7..229ed1d6134 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -6951,4 +6951,10 @@
</expr>
</where>
</select>
+
+ <select sql-case-id="select_numeric_operator">
+ <projections start-index="7" stop-index="18">
+ <expression-projection start-index="7" stop-index="18" text="5!"
alias="RESULT" />
+ </projections>
+ </select>
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/select.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
index de98b86d525..863dd7daa58 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
@@ -210,4 +210,5 @@
<sql-case id="select_with_to_date_function" value="SELECT TO_DATE('Febuary
15, 2016, 11:00 A.M.' DEFAULT 'January 01, 2016 12:00 A.M.' ON CONVERSION
ERROR, 'Month dd, YYYY, HH:MI A.M.') FROM DUAL;" db-types="Oracle" />
<sql-case id="select_with_expressions_in_projection" value="SELECT
((a.enddate - term + term2 + 1) / (last_day(term) - term + 1)) cnt, a.empid
FROM employee aWHERE nvl(disabled, 0) = 1 AND enddate BETWEEN term AND
last_day(term) AND EXISTS (SELECT 1 FROM post d WHERE a.orgid = d.orgid AND
a.postid = d.postid AND d.title != 'TEST' AND nvl(d.postid, 0) != 0)"
db-types="Oracle" />
<sql-case id="select_with_custom_table_function" value="SELECT
COUNT(empid) FROM EMPLOYEE b, custom_function(b.orgid) a WHERE a.postid =
b.postid" db-types="Oracle" />
+ <sql-case id="select_numeric_operator" value="SELECT 5! AS RESULT;"
db-types="openGauss" />
</sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
index d07df149600..ed8bade141b 100644
--- a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
+++ b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
@@ -394,29 +394,16 @@
<sql-case id="unsupported_select_case_for_opengauss_399" value="select
trim(leading'2' from );" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_400" value="select
trim(trailing '2' from );" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_401" value="select
substring(from 4 for 4) as text1;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_403" value="select ||/
clo1 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_404" value="select
clo1! from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_405" value="select
clo2! from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_406" value="select
@clo1, @clo2 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_407" value="select @
clo1, @clo2 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_408" value="select ||/
clo2 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_410" value="select @
clo1, @ clo2 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_411" value="select
||/clo1 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_412" value="select
||/clo2 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_415" value="select
||/clo1,||/clo2 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_416" value="select
@clo1 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_417" value="select
cos(2*pi(),2*pi()));" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_418" value="select ||/
clo1,||/clo2 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_420" value="select
|/clo1 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_423" value="select
|/clo2 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_424" value="select
|/clo1,|/clo2 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_425" value="select
|/clo1 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_426" value="select
|/clo2 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_427" value="select
!!clo1 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_428" value="select
!!clo2 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_430" value="select ~
clo1 , ~ clo2 from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_431" value="select ~
(clo1+clo2) from data_01;" db-types="openGauss" />
- <sql-case id="unsupported_select_case_for_opengauss_432" value="select
~clo1, ~clo2 from data_01;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_433" value="select
atan2(,) from sys_dummy;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_434" value="select
atan2('11+11',) from sys_dummy;" db-types="openGauss" />
<sql-case id="unsupported_select_case_for_opengauss_435" value="select
atan2(11 11) from sys_dummy;" db-types="openGauss" />