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 a64caed487a support chinese whitespace for oracle (#29708)
a64caed487a is described below

commit a64caed487a656ac562977e7ccbaec6e3a15a610
Author: Chuxin Chen <[email protected]>
AuthorDate: Sat Jan 13 21:38:23 2024 +0800

    support chinese whitespace for oracle (#29708)
---
 .../oracle/src/main/antlr4/imports/oracle/Keyword.g4        |  2 +-
 .../oracle/src/main/antlr4/imports/oracle/Literals.g4       |  2 +-
 test/it/parser/src/main/resources/case/dml/select.xml       | 13 ++++++++++++-
 .../parser/src/main/resources/sql/supported/dml/select.xml  |  1 +
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4 
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4
index 377fbd3871f..fe8a0d6039c 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4
@@ -20,7 +20,7 @@ lexer grammar Keyword;
 import Alphabet, Number;
 
 WS
-    : [ \t\r\n] + ->skip
+    : [ \t\r\n\u3000] + ->skip
     ;
 
 SELECT
diff --git 
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Literals.g4 
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Literals.g4
index 03936901a58..75521b48e6e 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Literals.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/Literals.g4
@@ -24,7 +24,7 @@ TIME_UNIT
     ;
 
 IDENTIFIER_
-    : 
[A-Za-z\u0080-\uFF0B\uFF0D-\uFFFF]+[A-Za-z_$#0-9\u0080-\uFF0B\uFF0D-\uFFFF]*
+    : 
[A-Za-z\u0080-\u2FFF\u3001-\uFF0B\uFF0D-\uFFFF]+[A-Za-z_$#0-9\u0080-\u2FFF\u3001-\uFF0B\uFF0D-\uFFFF]*
     ;
 
 STRING_
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 bc074bb6594..9459e7d4a85 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -6185,7 +6185,18 @@
             <simple-table name="DUAL" start-index="19" stop-index="22" />
         </from>
     </select>
-    
+
+    <select sql-case-id="select_with_chinese_whitespace">
+        <projections start-index="7" stop-index="12" >
+            <expression-projection text="1" start-index="7" stop-index="7" />
+            <expression-projection text="2" start-index="10" stop-index="10" />
+            <expression-projection text="3" start-index="12" stop-index="12" />
+        </projections>
+        <from>
+            <simple-table name="DUAL" start-index="19" stop-index="22" />
+        </from>
+    </select>
+
     <select sql-case-id="select_with_keyword_system" parameters="0">
         <from>
             <simple-table name="vtx_project" start-index="14" stop-index="24" 
/>
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 7f89d5c051d..977bc0e56a9 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
@@ -196,6 +196,7 @@
     <sql-case id="select_constant_with_nested_type_cast" value="SELECT 
CAST(MONEY '1' AS VARCHAR)::CHAR(10)::VARCHAR::CHAR(4)" 
db-types="PostgreSQL,openGauss"  />
     <sql-case id="select_projection_with_parameter" value="SELECT 1 AS id, ? 
AS status, SYSDATE AS create_time, TRUNC(SYSDATE) AS create_date FROM DUAL" 
db-types="Oracle"  />
     <sql-case id="select_with_chinese_comma" value="SELECT 1, 2,3 FROM DUAL" 
db-types="Oracle"  />
+    <sql-case id="select_with_chinese_whitespace" value="SELECT 1, 2,3 FROM 
DUAL" db-types="Oracle"  />
     <sql-case id="select_with_keyword_system" value="SELECT * FROM vtx_project 
WHERE system = ?" />
     <sql-case id="select_with_keyword_groups_and_rank" value="SELECT t.groups, 
t.rank FROM t_order t" db-types="MySQL" />
     <sql-case id="select_with_format_function" value="SELECT 
wi.code.format(null,'PURE_IDENTITY') as PURE_IDENTITY FROM warehouse_info wi;" 
db-types="Oracle" />

Reply via email to