This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 7a9a2d9 support pg/og amp operator. (#13616)
7a9a2d9 is described below
commit 7a9a2d9321557954cd83e5b6bcba462b55b8cc21
Author: tuichenchuxin <[email protected]>
AuthorDate: Mon Nov 15 18:41:32 2021 +0800
support pg/og amp operator. (#13616)
---
.../src/main/antlr4/imports/opengauss/BaseRule.g4 | 2 ++
.../src/main/antlr4/imports/postgresql/BaseRule.g4 | 2 ++
.../src/main/resources/case/dml/select-expression.xml | 12 ++++++++++++
.../main/resources/sql/supported/dml/select-expression.xml | 2 ++
4 files changed, 18 insertions(+)
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
index 24b5893..d50d4e1 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-opengauss/src/main/antlr4/imports/opengauss/BaseRule.g4
@@ -543,6 +543,8 @@ aExpr
| aExpr SLASH_ aExpr
| aExpr MOD_ aExpr
| aExpr CARET_ aExpr
+ | aExpr AMPERSAND_ aExpr
+ | aExpr VERTICAL_BAR_ aExpr
| aExpr qualOp aExpr
| qualOp aExpr
| aExpr qualOp
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/BaseRule.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/BaseRule.g4
index 99651b1..8e09e61 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/BaseRule.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-postgresql/src/main/antlr4/imports/postgresql/BaseRule.g4
@@ -543,6 +543,8 @@ aExpr
| aExpr SLASH_ aExpr
| aExpr MOD_ aExpr
| aExpr CARET_ aExpr
+ | aExpr AMPERSAND_ aExpr
+ | aExpr VERTICAL_BAR_ aExpr
| aExpr qualOp aExpr
| qualOp aExpr
| aExpr qualOp
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/select-expression.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/select-expression.xml
index 9f63536..5a7f380 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/select-expression.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/select-expression.xml
@@ -1816,4 +1816,16 @@
<simple-table name="t_order" start-index="65" stop-index="71" />
</from>
</select>
+
+ <select sql-case-id="select_with_amp">
+ <projections start-index="7" stop-index="11">
+ <expression-projection text="1 & 1" start-index="7"
stop-index="11"/>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_with_vertical_bar">
+ <projections start-index="7" stop-index="11">
+ <expression-projection text="1 | 1" start-index="7"
stop-index="11"/>
+ </projections>
+ </select>
</sql-parser-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dml/select-expression.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dml/select-expression.xml
index 19ab93a..0c1231c 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dml/select-expression.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dml/select-expression.xml
@@ -80,4 +80,6 @@
<sql-case id="select_where_with_subquery" value="SELECT last_name,
department_id FROM employees WHERE department_id = (SELECT department_id FROM
employees WHERE last_name = 'Lorentz') ORDER BY last_name, department_id"
db-types="Oracle"/>
<sql-case id="select_where_with_expr_with_not_in" value="SELECT * FROM
employees WHERE department_id NOT IN (SELECT department_id FROM departments
WHERE location_id = 1700) ORDER BY last_name" db-types="Oracle"/>
<sql-case id="select_projections_with_expr" value="SELECT 10+20,CASE
order_id WHEN 1 THEN '11' ELSE '00' END,1 FROM t_order" db-types="MySQL"/>
+ <sql-case id="select_with_amp" value="select 1 & 1"
db-types="PostgreSQL,openGauss" />
+ <sql-case id="select_with_vertical_bar" value="select 1 | 1"
db-types="PostgreSQL,openGauss" />
</sql-cases>