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 c709a751ed6 Fix oracle join SQL (#29517)
c709a751ed6 is described below

commit c709a751ed653666e3dfd3aef6f56c9e5962fdfb
Author: LotusMoon <[email protected]>
AuthorDate: Sat Dec 23 20:31:00 2023 +0800

    Fix oracle join SQL (#29517)
    
    * Fix Oracle join parse error
    
    * add join test case
---
 .../src/main/antlr4/imports/oracle/BaseRule.g4     |  5 ++--
 .../src/main/resources/case/dml/select-join.xml    | 30 ++++++++++++++++++++++
 .../resources/sql/supported/dml/select-join.xml    |  1 +
 3 files changed, 33 insertions(+), 3 deletions(-)

diff --git 
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4 
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index 8472d58648d..47812f51801 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -87,8 +87,7 @@ unreservedWord
 
 unreservedWord1
     : TRUNCATE | FUNCTION | PROCEDURE | CASE | WHEN | CAST | TRIM | SUBSTRING
-    | NATURAL | JOIN | FULL | INNER | OUTER | LEFT | RIGHT
-    | CROSS | USING | IF | TRUE | FALSE | LIMIT | OFFSET
+    | USING | IF | TRUE | FALSE | LIMIT | OFFSET
     | COMMIT | ROLLBACK | SAVEPOINT
     | ARRAY | INTERVAL | TIME | TIMESTAMP | LOCALTIME | LOCALTIMESTAMP | YEAR
     | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND
@@ -118,7 +117,7 @@ unreservedWord1
     | COLLATION | REAL | TYPE | FIRST | RANK | SAMPLE | SYSTIMESTAMP | MINUTE 
| ANY 
     | LENGTH | SINGLE_C | TIME_UNIT | TARGET | PUBLIC | ID | STATE | PRIORITY
     | PRIMARY | FOREIGN | KEY | POSITION | PRECISION | FUNCTION | PROCEDURE | 
SPECIFICATION | CASE
-    | WHEN | CAST | TRIM | SUBSTRING | FULL | INNER | OUTER | LEFT | RIGHT | 
CROSS
+    | WHEN | CAST | TRIM | SUBSTRING | FULL | JOIN
     | USING | FALSE | SAVEPOINT | BODY | CHARACTER | ARRAY | TIME | TIMEOUT | 
TIMESTAMP | LOCALTIME
     | DAY | ENABLE | DISABLE | CALL | INSTANCE | CLOSE | NEXT | NAME | NUMERIC
     | TRIGGERS | GLOBAL_NAME | BINARY | MOD | XOR | UNKNOWN | ALWAYS | CASCADE 
| GENERATED | PRIVILEGES
diff --git a/test/it/parser/src/main/resources/case/dml/select-join.xml 
b/test/it/parser/src/main/resources/case/dml/select-join.xml
index 48b37292b05..846172e9c9f 100644
--- a/test/it/parser/src/main/resources/case/dml/select-join.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-join.xml
@@ -643,4 +643,34 @@
             </expr>
         </where>
     </select>
+    <select sql-case-id="select_join-without_alias01">
+        <projections start-index="7" stop-index="7">
+            <shorthand-projection start-index="7" stop-index="7" />
+        </projections>
+        <from>
+            <join-table join-type="LEFT">
+                <left>
+                    <simple-table name="t1" start-index="14" stop-index="15"/>
+                </left>
+                <right>
+                    <simple-table name="t2" start-index="27" stop-index="28"/>
+                </right>
+                <on-condition>
+                    <binary-operation-expression start-index="33" 
stop-index="45">
+                        <left>
+                            <column name="id" start-index="33" stop-index="37">
+                                <owner name="t1" start-index="33" 
stop-index="34"/>
+                            </column>
+                        </left>
+                        <operator>=</operator>
+                        <right>
+                            <column name="id" start-index="41" stop-index="45">
+                                <owner name="t2" start-index="41" 
stop-index="42"/>
+                            </column>
+                        </right>
+                    </binary-operation-expression>
+                </on-condition>
+            </join-table>
+        </from>
+    </select>
 </sql-parser-test-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml
index fd2dcd40b41..2bd80796d3d 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml
@@ -32,4 +32,5 @@
     <sql-case id="select_natural_full_join" value="SELECT * FROM t_order o 
NATURAL FULL JOIN t_order_item i WHERE o.order_id = ?" 
db-types="PostgreSQL,openGauss,Oracle" />
     <sql-case id="select_with_join_operator" value="SELECT * FROM t_order o , 
t_order_item i WHERE o.order_id(+) = i.order_id" db-types="Oracle" />
     <sql-case id="select_join_with_quote" value="SELECT &quot;u&quot;.*, 
&quot;o&quot;.* FROM t_user &quot;u&quot; INNER JOIN t_order &quot;o&quot; ON 
&quot;u&quot;.user_id = &quot;o&quot;.user_id WHERE &quot;u&quot;.user_id = ?" 
db-types="Oracle" />
+    <sql-case id="select_join-without_alias01" value="select * from t1 left 
join t2 on t1.id = t2.id" db-types="Oracle"/>
 </sql-cases>

Reply via email to