This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 46bd2a78c3b Add SQL parser test cases for Hive (#37713)
46bd2a78c3b is described below

commit 46bd2a78c3bb8b7bd06427070c9e17d5e9016352
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 12 12:40:59 2026 +0800

    Add SQL parser test cases for Hive (#37713)
---
 .../src/main/resources/case/dml/select-special-function.xml | 13 +++++++++++++
 .../parser/src/main/resources/sql/supported/dml/delete.xml  |  2 +-
 .../parser/src/main/resources/sql/supported/dml/presto.xml  |  2 +-
 .../src/main/resources/sql/supported/dml/select-into.xml    |  2 +-
 .../src/main/resources/sql/supported/dml/select-lock.xml    |  2 +-
 .../main/resources/sql/supported/dml/select-pagination.xml  |  2 +-
 .../resources/sql/supported/dml/select-special-function.xml |  3 ++-
 7 files changed, 20 insertions(+), 6 deletions(-)

diff --git 
a/test/it/parser/src/main/resources/case/dml/select-special-function.xml 
b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
index 1cac313d6cb..3bf9fd5d855 100644
--- a/test/it/parser/src/main/resources/case/dml/select-special-function.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
@@ -4204,6 +4204,19 @@
         </from>
     </select>
 
+    <select sql-case-id="select_json_unquoted_separator">
+        <projections start-index="7" stop-index="23">
+            <expression-projection text="data ->> '$.name'" start-index="7" 
stop-index="23">
+                <expr>
+                    <function function-name="->>" text="data ->> '$.name'" 
start-index="7" stop-index="23" />
+                </expr>
+            </expression-projection>
+        </projections>
+        <from>
+            <simple-table name="t_json" start-index="30" stop-index="35" />
+        </from>
+    </select>
+
     <select sql-case-id="select_json_type">
         <projections start-index="7" stop-index="26">
             <expression-projection start-index="7" stop-index="26" 
text="JSON_TYPE('[1,2,3]')">
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/delete.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/delete.xml
index 098d98b152f..79730431277 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/delete.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/delete.xml
@@ -32,7 +32,7 @@
     <sql-case id="delete_with_with_clause" value="WITH cte (order_id, user_id) 
AS (SELECT order_id, user_id FROM t_order) DELETE t_order FROM cte WHERE 
t_order.order_id = cte.order_id" db-types="SQLServer" />
     <sql-case id="delete_using_with_clause" value="WITH cte AS (SELECT 
order_id FROM t_order WHERE order_id = 1000) DELETE FROM t_order USING t_order 
JOIN cte ON t_order.order_id = cte.order_id" db-types="MySQL" />
     <sql-case id="delete_without_columns_with_with_clause" value="WITH cte AS 
(SELECT order_id, user_id FROM t_order) DELETE t_order FROM cte WHERE 
t_order.order_id = cte.order_id" db-types="SQLServer" />
-    <sql-case id="delete_multi_tables" value="DELETE t_order, t_order_item 
from t_order, t_order_item where t_order.order_id = t_order_item.order_id and 
t_order.status = ?" db-types="MySQL,Presto,Doris" />
+    <sql-case id="delete_multi_tables" value="DELETE t_order, t_order_item 
from t_order, t_order_item where t_order.order_id = t_order_item.order_id and 
t_order.status = ?" db-types="MySQL,Presto,Doris,Hive" />
     <sql-case id="delete_multi_tables_with_using" value="DELETE from t_order, 
t_order_item using t_order left join t_order_item on t_order.order_id = 
t_order_item.order_id where t_order.status = ?" db-types="MySQL,Doris" />
     <sql-case id="delete_with_query_hint" value="DELETE FROM t_order WHERE 
order_id = ?" db-types="SQLServer" />
     <sql-case id="delete_with_simple_table" value="DELETE FROM 
product_descriptions WHERE language_id = 'AR'" db-types="Oracle" />
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/presto.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/presto.xml
index 7f17ce2d28b..f409c1004bb 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/presto.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/presto.xml
@@ -56,7 +56,7 @@
     <sql-case id="presto_select_limit_comma" value="SELECT * FROM t_order 
LIMIT 2, 5" db-types="Presto,Doris" />
     <sql-case id="presto_select_join_natural_left" value="SELECT * FROM 
t_order NATURAL LEFT JOIN t_order_item" db-types="Presto" />
     <sql-case id="presto_select_system_variable" value="SELECT 
@@global.time_zone" db-types="Presto" />
-    <sql-case id="presto_select_parameter_marker" value="SELECT ?" 
db-types="Presto" />
+    <sql-case id="presto_select_parameter_marker" value="SELECT ?" 
db-types="Presto,Hive" />
     <sql-case id="presto_select_all_qualified_shorthand" value="SELECT ALL 
t_order.* FROM t_order" db-types="Presto" />
     <sql-case id="presto_select_two_level_order_expr" value="SELECT 
t_order.order_id FROM t_order ORDER BY order_id + 1" db-types="Presto" />
     <sql-case id="presto_select_current_time_trim" value="SELECT CURRENT_TIME, 
TRIM(LEADING 'x' FROM status), TRIM(TRAILING 'y' FROM status) FROM t_order" 
db-types="Presto" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml
index c799491125f..d2b3f81c063 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml
@@ -17,7 +17,7 @@
   -->
 
 <sql-cases>
-    <sql-case id="select_into_before_from" value="SELECT status INTO @var1 
FROM t_order WHERE order_id = ?" db-types="MySQL" />
+    <sql-case id="select_into_before_from" value="SELECT status INTO @var1 
FROM t_order WHERE order_id = ?" db-types="MySQL,Hive" />
     <sql-case id="select_into_after_from" value="SELECT status FROM t_order 
WHERE order_id = ? INTO @var1" db-types="MySQL" />
     <sql-case id="select_into_multi_variable" value="SELECT user_id, status 
FROM t_order WHERE order_id = ? INTO @var1, @var2" db-types="MySQL" />
     <sql-case id="select_into_out_file" value="SELECT * FROM t_order LIMIT ? 
INTO OUTFILE '/tmp/tmp.txt'" db-types="MySQL" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-lock.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-lock.xml
index d438609afa0..aeae9b44eeb 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-lock.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-lock.xml
@@ -18,7 +18,7 @@
 
 <sql-cases>
     <sql-case id="select_lock_with_lock_in" value="SELECT * FROM t_order WHERE 
order_id = ? LOCK IN SHARE MODE" db-types="MySQL,Doris" />
-    <sql-case id="select_lock_with_for_update" value="SELECT * FROM t_order 
WHERE order_id = ? FOR UPDATE" 
db-types="MySQL,Oracle,PostgreSQL,openGauss,Presto,Doris" />
+    <sql-case id="select_lock_with_for_update" value="SELECT * FROM t_order 
WHERE order_id = ? FOR UPDATE" 
db-types="MySQL,Oracle,PostgreSQL,openGauss,Presto,Doris,Hive" />
     <sql-case id="select_lock_with_for_share" value="SELECT * FROM t_order 
WHERE order_id = ? FOR SHARE" db-types="MySQL,Doris" />
     <sql-case id="select_lock_with_nowait" value="SELECT * FROM t_order WHERE 
order_id = ? FOR UPDATE NOWAIT" db-types="MySQL,Doris" />
     <sql-case id="select_lock_with_skip_locked" value="SELECT * FROM t_order 
WHERE order_id = ? FOR UPDATE SKIP LOCKED" db-types="MySQL,Doris" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-pagination.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-pagination.xml
index c2aa71171f4..c772b6542d8 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-pagination.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-pagination.xml
@@ -35,7 +35,7 @@
     <sql-case id="select_pagination_with_row_number_not_at_end" value="SELECT 
* FROM t_order WHERE ROWNUM &lt;= ? ORDER BY order_id" db-types="Oracle" />
     <sql-case id="select_pagination_with_fetch_first_with_row_number" 
value="SELECT * FROM t_order ORDER BY order_id FETCH FIRST 5 ROWS ONLY" 
db-types="Oracle" />
     <sql-case id="select_pagination_with_offset_fetch" value="SELECT * FROM 
t_order ORDER BY order_id OFFSET 0 ROW FETCH NEXT ? ROWS ONLY" 
db-types="SQLServer" />
-    <sql-case id="select_pagination_with_limit_offset_and_row_count" 
value="SELECT order_id, user_id FROM t_order LIMIT 1, 2" 
db-types="MySQL,openGauss" />
+    <sql-case id="select_pagination_with_limit_offset_and_row_count" 
value="SELECT order_id, user_id FROM t_order LIMIT 1, 2" 
db-types="MySQL,openGauss,Hive" />
     <sql-case id="select_pagination_with_limit_row_count" value="SELECT 
order_id, user_id FROM t_order LIMIT 2" db-types="MySQL" />
     <sql-case id="select_pagination_with_limit_fetch_count" value="SELECT * 
FROM t_new_order FETCH NEXT 3 ROW ONLY" db-types="openGauss,PostgreSQL" />
     <sql-case id="select_pagination_with_first" value="SELECT FIRST 1 1 a FROM 
t_order" db-types="Firebird" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
 
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
index a4649cd5a13..f834bed2e00 100644
--- 
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
+++ 
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
@@ -165,7 +165,8 @@
     <sql-case id="select_json_parse" value="SELECT 
JSON_PARSE('{&quot;k1&quot;:&quot;v31&quot;,&quot;k2&quot;:300}')" 
db-types="Doris" />
     <sql-case id="select_json_parse_error_to_null" value="SELECT 
JSON_PARSE('invalid json')" db-types="Doris" />
     <sql-case id="select_json_parse_error_to_value" value="SELECT 
JSON_PARSE('invalid json', '{}')" db-types="Doris" />
-    <sql-case id="select_json_separator_doris" value="SELECT 
JSON_SEPARATOR(order_id, '$.a') FROM t_order" db-types="Doris" />
+    <sql-case id="select_json_separator_doris" value="SELECT 
JSON_SEPARATOR(order_id, '$.a') FROM t_order" db-types="Doris,Hive" />
+    <sql-case id="select_json_unquoted_separator" value="SELECT data ->> 
'$.name' FROM t_json" db-types="Hive" />
     <sql-case id="select_std" value="SELECT STD(1)" db-types="MySQL" />
     <sql-case id="select_stddev" value="SELECT STDDEV(1)" db-types="MySQL" />
     <sql-case id="select_stddev_pop" value="SELECT STDDEV_POP(1)" 
db-types="MySQL" />

Reply via email to