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 9be867c447f Add SQL parser test cases for Hive (#37699)
9be867c447f is described below
commit 9be867c447fbbaa4fcf8944019cdc091e230270f
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jan 10 15:16:51 2026 +0800
Add SQL parser test cases for Hive (#37699)
---
.../src/main/resources/case/dml/select-hive.xml | 40 ++++++++++++++++++++++
.../main/resources/sql/supported/dml/delete.xml | 2 +-
.../main/resources/sql/supported/dml/presto.xml | 12 +++----
.../sql/supported/dml/select-distinct.xml | 2 +-
.../sql/supported/dml/select-expression.xml | 6 ++--
.../resources/sql/supported/dml/select-hive.xml | 2 ++
.../sql/supported/dml/select-pagination.xml | 2 +-
.../sql/supported/dml/select-special-function.xml | 10 +++---
.../sql/supported/dml/select-sub-query.xml | 2 +-
.../main/resources/sql/supported/dml/select.xml | 2 +-
.../main/resources/sql/supported/dml/update.xml | 2 +-
.../main/resources/sql/supported/dml/values.xml | 2 +-
12 files changed, 63 insertions(+), 21 deletions(-)
diff --git a/test/it/parser/src/main/resources/case/dml/select-hive.xml
b/test/it/parser/src/main/resources/case/dml/select-hive.xml
index b6576163f69..c7b89faf0d1 100644
--- a/test/it/parser/src/main/resources/case/dml/select-hive.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-hive.xml
@@ -575,4 +575,44 @@
</from>
</select>
+ <select sql-case-id="hive_select_literals_dual">
+ <projections start-index="7" stop-index="37">
+ <expression-projection text="DATE'2024-01-01'" start-index="7"
stop-index="23">
+ <expr>
+ <common-expression text="DATE'2024-01-01'" start-index="7"
stop-index="23" />
+ </expr>
+ </expression-projection>
+ <expression-projection text="0x1F" start-index="26"
stop-index="29">
+ <expr>
+ <common-expression text="0x1F" start-index="26"
stop-index="29" />
+ </expr>
+ </expression-projection>
+ <expression-projection text="B'101'" start-index="32"
stop-index="37">
+ <expr>
+ <common-expression text="B'101'" start-index="32"
stop-index="37" />
+ </expr>
+ </expression-projection>
+ </projections>
+ <from>
+ <simple-table name="DUAL" start-index="44" stop-index="47" />
+ </from>
+ </select>
+
+ <select sql-case-id="hive_select_owner_function">
+ <projections start-index="7" stop-index="23">
+ <expression-projection text="analytics.fn(col)" start-index="7"
stop-index="23">
+ <expr>
+ <function function-name="analytics.fn(col)"
text="analytics.fn(col)" start-index="7" stop-index="23">
+ <parameter>
+ <column name="col" start-index="20"
stop-index="22" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ <from>
+ <simple-table name="t_func_owner" start-index="30" stop-index="41"
/>
+ </from>
+ </select>
+
</sql-parser-test-cases>
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 f78241e1f4a..098d98b152f 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
@@ -22,7 +22,7 @@
<sql-case id="delete_with_special_character_without_sharding_value"
value="DELETE FROM `t_order` WHERE `status`='init'" db-types="MySQL,Doris" />
<sql-case id="delete_with_alias" value="DELETE FROM t_order AS o WHERE
status=?" db-types="MySQL,SQLServer,Doris" />
<sql-case id="delete_with_alias_without_as" value="DELETE
product_price_history pp WHERE (product_id, currency_code, effective_from_date)
IN (SELECT product_id, currency_code, MAX(effective_from_date) FROM
product_price_history GROUP BY product_id, currency_code)" db-types="Oracle" />
- <sql-case id="delete_with_order_by_row_count" value="DELETE FROM t_order
WHERE order_id = ? AND user_id = ? AND status=? ORDER BY order_id LIMIT ?"
db-types="MySQL,Doris" />
+ <sql-case id="delete_with_order_by_row_count" value="DELETE FROM t_order
WHERE order_id = ? AND user_id = ? AND status=? ORDER BY order_id LIMIT ?"
db-types="MySQL,Doris,Hive" />
<sql-case id="delete_with_output_clause" value="DELETE FROM t_order OUTPUT
DELETED.order_id, DELETED.user_id INTO @MyTableVar (temp_order_id,
temp_user_id) WHERE order_id = ?" db-types="SQLServer" />
<sql-case id="delete_with_output_clause_without_output_table_columns"
value="DELETE FROM t_order OUTPUT DELETED.order_id, DELETED.user_id INTO
@MyTableVar WHERE order_id = ?" db-types="SQLServer" />
<sql-case id="delete_with_output_clause_without_output_table"
value="DELETE FROM t_order OUTPUT DELETED.order_id, DELETED.user_id WHERE
order_id = ?" db-types="SQLServer" />
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 b54de1e86e6..d2962179ee6 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
@@ -23,10 +23,10 @@
<sql-case id="presto_select_not_flag" value="SELECT * FROM t_order WHERE
NOT flag" db-types="Presto" />
<sql-case id="presto_select_not_exists_subquery" value="SELECT * FROM
t_order WHERE NOT EXISTS (SELECT 1)" db-types="Presto" />
<sql-case id="presto_select_assignment_operator" value="SELECT * FROM
t_order WHERE order_id := 1" db-types="Presto" />
- <sql-case id="presto_select_predicate_variants" value="SELECT * FROM
t_order WHERE order_id NOT BETWEEN 1 AND 5 AND status REGEXP '[12]' AND status
RLIKE '[34]' AND status LIKE 'ok'" db-types="Presto" />
+ <sql-case id="presto_select_predicate_variants" value="SELECT * FROM
t_order WHERE order_id NOT BETWEEN 1 AND 5 AND status REGEXP '[12]' AND status
RLIKE '[34]' AND status LIKE 'ok'" db-types="Presto,Hive" />
<sql-case id="presto_select_case_binary_variable" value="SELECT CASE
catalog.schem1.order_id WHEN 1 THEN 'one' ELSE 'other' END, BINARY status,
@user_value FROM t_order" db-types="Presto" />
<sql-case id="presto_select_concat_match_interval" value="SELECT status ||
'X', MATCH(status) AGAINST ('kw'), INTERVAL '1' DAY, catalog.fn(order_id) FROM
t_order" db-types="Presto" />
- <sql-case id="presto_select_is_true" value="SELECT * FROM t_order WHERE
flag IS TRUE" db-types="Presto" />
+ <sql-case id="presto_select_is_true" value="SELECT * FROM t_order WHERE
flag IS TRUE" db-types="Presto,Hive" />
<sql-case id="presto_select_xor" value="SELECT * FROM t_order WHERE flag
XOR 1" db-types="Presto" />
<sql-case id="presto_select_safe_equal" value="SELECT * FROM t_order WHERE
flag <=> TRUE" db-types="Presto" />
<sql-case id="presto_select_member_of" value="SELECT * FROM t_order WHERE
order_id MEMBER OF("[1,2]")" db-types="Presto" />
@@ -46,7 +46,7 @@
<sql-case id="presto_select_group_concat" value="SELECT
GROUP_CONCAT(order_id) FROM t_order" db-types="Presto" />
<sql-case id="presto_select_limit_only" value="SELECT * FROM t_order LIMIT
5" db-types="Presto" />
<sql-case id="presto_select_current_time_precision" value="SELECT
CURRENT_TIME(3)" db-types="Presto,Doris" />
- <sql-case id="presto_select_predicate_not_variants" value="SELECT * FROM
t_order WHERE flag IS NOT NULL AND status NOT LIKE '%x%' AND status NOT REGEXP
'[12]' AND status NOT RLIKE '[34]' AND order_id NOT IN (1, 2)"
db-types="Presto" />
+ <sql-case id="presto_select_predicate_not_variants" value="SELECT * FROM
t_order WHERE flag IS NOT NULL AND status NOT LIKE '%x%' AND status NOT REGEXP
'[12]' AND status NOT RLIKE '[34]' AND order_id NOT IN (1, 2)"
db-types="Presto,Hive" />
<sql-case id="presto_select_collate_params" value="SELECT 'a' COLLATE
utf8mb4_bin, 'b' COLLATE latin1_bin FROM t_order" db-types="Presto" />
<sql-case id="presto_select_agg_group_having_order" value="SELECT DISTINCT
status, COUNT(DISTINCT order_id) AS cnt FROM t_order GROUP BY status HAVING
COUNT(*) > 1 ORDER BY 2 DESC, status ASC" db-types="Presto" />
<sql-case id="presto_select_window_clause" value="SELECT ROW_NUMBER() OVER
win FROM t_order WINDOW win AS (PARTITION BY status ORDER BY order_id ROWS
BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" db-types="Presto" />
@@ -97,9 +97,9 @@
<sql-case id="presto_delete_table_alias" value="DELETE FROM t_order AS o
WHERE flag = 1" db-types="Presto" />
<sql-case id="presto_select_lock_share_of_nowait" value="SELECT * FROM
t_order FOR SHARE OF t_order NOWAIT" db-types="Presto" />
<sql-case id="presto_select_lock_skip_locked" value="SELECT * FROM t_order
FOR UPDATE OF t_order SKIP LOCKED" db-types="Presto" />
- <sql-case id="presto_select_is_null" value="SELECT * FROM t_order WHERE
flag IS NULL" db-types="Presto" />
- <sql-case id="presto_select_is_not_true" value="SELECT * FROM t_order
WHERE flag IS NOT TRUE" db-types="Presto" />
- <sql-case id="presto_select_is_false" value="SELECT * FROM t_order WHERE
flag IS FALSE" db-types="Presto" />
+ <sql-case id="presto_select_is_null" value="SELECT * FROM t_order WHERE
flag IS NULL" db-types="Presto,Hive" />
+ <sql-case id="presto_select_is_not_true" value="SELECT * FROM t_order
WHERE flag IS NOT TRUE" db-types="Presto,Hive" />
+ <sql-case id="presto_select_is_false" value="SELECT * FROM t_order WHERE
flag IS FALSE" db-types="Presto,Hive" />
<sql-case id="presto_select_in_param_markers" value="SELECT * FROM t_order
WHERE order_id IN (?, ?)" db-types="Presto" />
<sql-case id="presto_select_distinctrow" value="SELECT DISTINCTROW * FROM
t_order" db-types="Presto" />
</sql-cases>
diff --git
a/test/it/parser/src/main/resources/sql/supported/dml/select-distinct.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select-distinct.xml
index 8901e853b06..f8840ece0d4 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-distinct.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-distinct.xml
@@ -34,7 +34,7 @@
<sql-case id="select_distinct_with_star" value="SELECT DISTINCT * FROM
t_order WHERE order_id > 1100 ORDER BY order_id" />
<sql-case id="select_distinct_with_owner_star" value="SELECT DISTINCT
t_order.*, t_order_item.order_id FROM t_order, t_order_item WHERE
t_order.order_id = t_order_item.order_id ORDER BY t_order.order_id" />
<sql-case id="select_distinct_with_sum" value="SELECT SUM(DISTINCT
order_id) s FROM t_order WHERE order_id < 1100" />
- <sql-case id="select_distinct_with_count" value="SELECT COUNT(DISTINCT
order_id) c FROM t_order WHERE order_id < 1100" />
+ <sql-case id="select_distinct_with_count" value="SELECT COUNT(DISTINCT
order_id) c FROM t_order WHERE order_id < 1100"
db-types="MySQL,PostgreSQL,openGauss,Doris" />
<sql-case id="select_distinct_with_avg" value="SELECT AVG(DISTINCT
order_id) FROM t_order WHERE order_id < 1100" db-types="MySQL" />
<!--TODO The metadata of MySQL is different from which of H2. For now, we
could only specify one db-types from MySQL or H2. We need to support different
expected data in one case.-->
<sql-case id="select_distinct_with_count_sum" value="SELECT COUNT(DISTINCT
order_id), SUM(DISTINCT order_id) FROM t_order WHERE order_id < 1100"
db-types="MySQL" />
diff --git
a/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
index 38d0a3654ee..b103c74394d 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml
@@ -27,8 +27,8 @@
<sql-case id="select_with_expression_for_postgresql" value="SELECT
o.order_id + 1 * 2 as exp FROM t_order AS o ORDER BY o.order_id"
db-types="PostgreSQL,openGauss" />
<sql-case id="select_with_encode_function" value="SELECT
ENCODE(test_datetype_col::bytea,'escape') FROM test_bytea"
db-types="PostgreSQL,openGauss" />
<sql-case id="select_with_date_function" value="SELECT
DATE(i.creation_date) AS creation_date FROM `t_order_item` AS i ORDER BY
DATE(i.creation_date) DESC" db-types="MySQL" />
- <sql-case id="select_with_regexp" value="SELECT * FROM t_order_item t
WHERE t.status REGEXP ? AND t.item_id IN (?, ?)" db-types="MySQL,Doris" />
- <sql-case id="select_with_rlike" value="SELECT * FROM t_order_item t WHERE
t.status RLIKE ? AND t.item_id IN (?, ?)" db-types="MySQL,Doris" />
+ <sql-case id="select_with_regexp" value="SELECT * FROM t_order_item t
WHERE t.status REGEXP ? AND t.item_id IN (?, ?)" db-types="MySQL,Doris,Hive" />
+ <sql-case id="select_with_rlike" value="SELECT * FROM t_order_item t WHERE
t.status RLIKE ? AND t.item_id IN (?, ?)" db-types="MySQL,Doris,Hive" />
<sql-case id="select_with_case_expression" value="select t.*,o.item_id as
item_id,(case when t.status = 'init' then '已启用' when t.status = 'failed' then
'已停用' end) as stateName from t_order t left join t_order_item as o on
o.order_id =t.order_id where t.order_id=1000 limit 1" db-types="MySQL,H2" />
<sql-case id="select_where_with_expr_with_or" value="SELECT * FROM t_order
WHERE t_order.order_id = ? OR ? = t_order.order_id" db-types="MySQL" />
<sql-case id="select_where_with_expr_with_or_sign" value="SELECT * FROM
t_order WHERE t_order.order_id = ? || ? = t_order.order_id" db-types="MySQL" />
@@ -52,7 +52,7 @@
<sql-case id="select_where_with_predicate_with_like" value="SELECT * FROM
t_order WHERE t_order.order_id NOT LIKE '1%' ESCAPE '$'"
db-types="MySQL,Presto" />
<sql-case id="select_where_with_predicate_with_not_like" value="SELECT *
FROM t_order WHERE t_order.status NOT LIKE '1%'"
db-types="MySQL,PostgreSQL,openGauss" />
<sql-case id="select_where_with_predicate_with_regexp" value="SELECT *
FROM t_order WHERE t_order.order_id NOT REGEXP '[123]'" db-types="MySQL,Presto"
/>
- <sql-case id="select_where_with_predicate_with_rlike" value="SELECT * FROM
t_order WHERE t_order.order_id NOT RLIKE '[123]'" db-types="MySQL,Presto,Doris"
/>
+ <sql-case id="select_where_with_predicate_with_rlike" value="SELECT * FROM
t_order WHERE t_order.order_id NOT RLIKE '[123]'"
db-types="MySQL,Presto,Doris,Hive" />
<sql-case id="select_where_with_bit_expr_with_vertical_bar" value="SELECT
* FROM t_order WHERE t_order.order_id | ?" db-types="MySQL" />
<sql-case id="select_where_with_bit_expr_with_ampersand" value="SELECT *
FROM t_order WHERE t_order.order_id & ?" db-types="MySQL" />
<sql-case id="select_where_with_bit_expr_with_signed_left_shift"
value="SELECT * FROM t_order WHERE t_order.order_id << ?"
db-types="MySQL" />
diff --git
a/test/it/parser/src/main/resources/sql/supported/dml/select-hive.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select-hive.xml
index d692e35e73d..5f21c628f4d 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-hive.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-hive.xml
@@ -43,4 +43,6 @@
<sql-case id="hive_select_order_limit_param" value="SELECT * FROM t_order
ORDER BY 1, price + 1 DESC LIMIT 1 OFFSET 1" db-types="Hive" />
<sql-case id="hive_select_case_variables" value="SELECT CASE WHEN a > 1
THEN b ELSE c END, @var, @@global.var FROM t_case" db-types="Hive" />
<sql-case id="hive_select_join_using_comma" value="SELECT * FROM t1 JOIN
t2 USING (id), t3" db-types="Hive" />
+ <sql-case id="hive_select_literals_dual" value="SELECT DATE '2024-01-01',
0x1F, B'101' FROM DUAL" db-types="Hive" />
+ <sql-case id="hive_select_owner_function" value="SELECT analytics.fn(col)
FROM t_func_owner" db-types="Hive" />
</sql-cases>
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 45e5ad82896..0c8379be29d 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
@@ -43,7 +43,7 @@
<sql-case id="select_pagination_with_skip" value="SELECT SKIP 1 1 a FROM
t_order" db-types="Firebird" />
<sql-case id="select_limit_offset_doris" value="SELECT * FROM t_order
LIMIT 5 OFFSET 2" db-types="Doris" />
<sql-case id="select_limit_only_doris" value="SELECT * FROM t_order LIMIT
5" db-types="Doris" />
- <sql-case id="select_limit_with_params_doris" value="SELECT * FROM t_order
LIMIT ?, ?" db-types="Doris" />
+ <sql-case id="select_limit_with_params_doris" value="SELECT * FROM t_order
LIMIT ?, ?" db-types="Doris,Hive" />
<!-- <sql-case id="select_pagination_with_first_and_expr_value"
value="SELECT FIRST (1+1) 1 a FROM t_order" db-types="Firebird" />-->
<!-- <sql-case id="select_pagination_with_skip_and_expr_value"
value="SELECT SKIP (2+2) 1 a FROM t_order" db-types="Firebird" />-->
</sql-cases>
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 bfea68687ba..14b428dc08f 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
@@ -20,17 +20,17 @@
<sql-case id="select_group_concat_with_order_by" value="SELECT
GROUP_CONCAT(status ORDER BY status) FROM t_order" db-types="MySQL,Doris" />
<sql-case id="select_group_concat_with_order_by_for_opengauss"
value="SELECT GROUP_CONCAT(status ORDER BY status) FROM t_order"
db-types="openGauss" />
<sql-case id="select_window_function" value="SELECT order_id, ROW_NUMBER()
OVER() FROM t_order" db-types="MySQL,Presto" />
- <sql-case id="select_cast_function" value="SELECT CAST('1' AS UNSIGNED)"
db-types="MySQL" />
+ <sql-case id="select_cast_function" value="SELECT CAST('1' AS UNSIGNED)"
db-types="MySQL,Hive" />
<sql-case id="select_cast_as_year" value="SELECT CAST(-1.1 AS YEAR)"
db-types="MySQL" />
<sql-case id="select_cast" value="SELECT CAST(c AT TIME ZONE 'UTC' AS
DATETIME)" db-types="MySQL" />
<sql-case id="select_cast_multiset" value="select CAST(MULTISET(SELECT
cust_address FROM customers c WHERE c.customer_id = cd.customer_id) as
cust_address_tab_typ) from customer;" db-types="Oracle" />
<sql-case id="select_convert_function" value="SELECT CONVERT('2020-10-01',
DATE)" db-types="MySQL" />
- <sql-case id="select_position" value="SELECT POSITION('bar' IN
'foobarbar')" db-types="MySQL,Doris" />
+ <sql-case id="select_position" value="SELECT POSITION('bar' IN
'foobarbar')" db-types="MySQL,Doris,Hive" />
<sql-case id="select_substring" value="SELECT SUBSTRING('foobarbar' from
-4 for 2)" db-types="MySQL" />
<sql-case id="select_substr" value="SELECT SUBSTR('foobarbar' from 4)"
db-types="MySQL,Presto" />
<sql-case id="select_extract" value="SELECT EXTRACT(YEAR FROM
'2019-07-02')" db-types="MySQL" />
<sql-case id="select_extract_from_column" value="SELECT EXTRACT(YEAR FROM
o.creation_date) FROM t_order o" db-types="MySQL" />
- <sql-case id="select_char" value="SELECT CHAR(77,121,83,81,'76')"
db-types="MySQL,Doris" />
+ <sql-case id="select_char" value="SELECT CHAR(77,121,83,81,'76')"
db-types="MySQL,Doris,Hive" />
<sql-case id="select_chr_using_nchar_cs" value="SELECT CHR (196 USING
NCHAR_CS) FROM DUAL;" db-types="Oracle" />
<sql-case id="select_trim" value="SELECT TRIM(' bar ')"
db-types="MySQL,Doris" />
<sql-case id="select_trim_with_both" value="SELECT TRIM(BOTH ' ' from '
bar ')" db-types="MySQL,Doris" />
@@ -136,7 +136,7 @@
<sql-case id="select_window_with_cume_dist_function" value="SELECT val,
CUME_DIST() OVER() FROM numbers" db-types="MySQL" />
<sql-case id="select_curdate_function" value="SELECT CURDATE()"
db-types="MySQL" />
<sql-case id="select_current_date_function" value="SELECT CURRENT_DATE()"
db-types="MySQL" />
- <sql-case id="select_current_time_function" value="SELECT CURRENT_TIME()"
db-types="MySQL,Presto" />
+ <sql-case id="select_current_time_function" value="SELECT CURRENT_TIME()"
db-types="MySQL,Presto,Hive" />
<sql-case id="select_current_timestamp_function" value="SELECT
CURRENT_TIMESTAMP()" db-types="MySQL" />
<sql-case id="select_curtime_function" value="SELECT CURTIME()"
db-types="MySQL" />
<sql-case id="select_date_function" value="SELECT DATE('2003-12-31
01:02:03')" db-types="MySQL" />
@@ -306,7 +306,7 @@
<sql-case id="select_period_diff" value="SELECT
PERIOD_DIFF(200802,200703)" db-types="MySQL" />
<sql-case id="select_percent_rank" value="SELECT PERCENT_RANK() OVER
(ORDER BY salary) FROM employees;" db-types="MySQL" />
<sql-case id="select_pi" value="SELECT PI()" db-types="MySQL" />
- <sql-case id="select_regexp" value="SELECT 'a' REGEXP '^[a-d]'"
db-types="MySQL" />
+ <sql-case id="select_regexp" value="SELECT 'a' REGEXP '^[a-d]'"
db-types="MySQL,Hive" />
<sql-case id="select_with_json_object_function" value="SELECT
JSON_OBJECT('name' VALUE 'John', 'age' VALUE 30) AS json_data FROM DUAL"
db-types="Oracle" />
<sql-case id="select_regexp_function" value="SELECT REGEXP('billie
eillish', '^billie')" db-types="Doris" />
<sql-case id="select_regexp_function_with_null" value="SELECT REGEXP(NULL,
'^billie')" db-types="Doris" />
diff --git
a/test/it/parser/src/main/resources/sql/supported/dml/select-sub-query.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select-sub-query.xml
index 492eadf4939..2c893ca8516 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-sub-query.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-sub-query.xml
@@ -22,7 +22,7 @@
<sql-case id="select_sub_query_with_table" value="SELECT t.* FROM (SELECT
* FROM t_order WHERE order_id IN (?, ?)) t" />
<sql-case id="select_with_equal_subquery" value="SELECT * FROM t_order
WHERE user_id = (SELECT user_id FROM t_order_item WHERE id = 10)"
db-types="MySQL, PostgreSQL,openGauss" />
<sql-case id="select_with_any_subquery" value="SELECT * FROM employees
WHERE salary = ANY (SELECT salary FROM employees WHERE department_id = 30)
ORDER BY employee_id;" db-types="Oracle" />
- <sql-case id="select_with_in_subquery" value="SELECT * FROM t_order WHERE
user_id IN (SELECT user_id FROM t_order_item WHERE id IN (10, 11))"
db-types="MySQL,PostgreSQL,openGauss,Doris" />
+ <sql-case id="select_with_in_subquery" value="SELECT * FROM t_order WHERE
user_id IN (SELECT user_id FROM t_order_item WHERE id IN (10, 11))"
db-types="MySQL,PostgreSQL,openGauss,Doris,Hive" />
<sql-case id="select_with_between_subquery" value="SELECT * FROM t_order
WHERE user_id BETWEEN (SELECT user_id FROM t_order_item WHERE order_id = 10)
AND ?" db-types="MySQL, PostgreSQL,openGauss,Doris" />
<sql-case id="select_with_exists_sub_query_with_project" value="SELECT
EXISTS (SELECT 1 FROM t_order)" db-types="MySQL,PostgreSQL,openGauss" />
<sql-case id="select_with_exists_sub_query_with_project_for_doris"
value="SELECT EXISTS (SELECT 1 FROM t_order)" db-types="Doris" />
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 b7a75296b97..8fd2f7cc09f 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
@@ -126,7 +126,7 @@
<sql-case id="select_with_jsonb_path_predicate_check" value="SELECT
content_json::jsonb@@'$.keyword[*]=="ss"' FROM tb_content_json"
db-types="PostgreSQL,openGauss" />
<sql-case id="select_with_assignment_operator" value="SELECT @rn := 1,
@now_code := '' FROM t_order" db-types="MySQL,Doris" />
<sql-case id="select_with_assignment_operator_and_keyword" value="SELECT
@KEY := '', @num := 123 FROM t_order" db-types="MySQL,Doris" />
- <sql-case id="select_from_dual" value="SELECT 1 FROM DUAL"
db-types="MySQL" />
+ <sql-case id="select_from_dual" value="SELECT 1 FROM DUAL"
db-types="MySQL,Hive" />
<sql-case id="select_with_cast_as_signed" value="SELECT
user_id,CAST(order_id AS SIGNED) FROM t_order" db-types="MySQL" />
<sql-case id="select_with_cast_as_unsigned" value="SELECT CAST(order_id AS
UNSIGNED),user_id FROM t_order" db-types="MySQL" />
<sql-case id="select_with_cast_as_signed_int" value="SELECT
user_id,CAST(order_id AS SIGNED INT) FROM t_order" db-types="MySQL" />
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/update.xml
b/test/it/parser/src/main/resources/sql/supported/dml/update.xml
index d68cef9586f..d876c7d6ca6 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/update.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/update.xml
@@ -31,7 +31,7 @@
<sql-case id="update_with_column_equal_column" value="update t_order set
order_id = order_id, status = 'init' where order_id = order_id AND order_id =
?" db-types="MySQL" />
<sql-case id="update_with_case_when" value="update stock_freeze_detail set
row_status=case WHEN (id=?) THEN ? WHEN (id=?) THEN ? WHEN (id=?) THEN ? end,
update_user=case WHEN (id=?) THEN ? WHEN (id=?) THEN ? WHEN (id=?) THEN ?
end, update_time=case WHEN (id=?) THEN ? end where tenant_id = ?"
db-types="MySQL,Oracle" />
- <sql-case id="update_with_order_by_row_count" value="UPDATE t_order SET
status = ? WHERE order_id = ? AND user_id = ? ORDER BY order_id LIMIT ?"
db-types="MySQL,Presto,Doris" />
+ <sql-case id="update_with_order_by_row_count" value="UPDATE t_order SET
status = ? WHERE order_id = ? AND user_id = ? ORDER BY order_id LIMIT ?"
db-types="MySQL,Presto,Doris,Hive" />
<sql-case id="update_with_number" value="UPDATE t_order SET order_id = ?
WHERE user_id = ?" db-types="PostgreSQL,openGauss" />
<sql-case id="update_with_with_clause" value="WITH cte (order_id, user_id,
status) AS (SELECT order_id, user_id, status FROM t_order) UPDATE t_order SET
status = ? FROM t_order AS t JOIN cte AS c ON t.order_id = c.order_id WHERE
c.order_id = ?" db-types="SQLServer" />
<sql-case id="update_with_from_clause" value="UPDATE t_order SET status =
? FROM t_order AS t JOIN t_order_item AS i ON t.order_id = i.order_id WHERE
i.order_id = ?" db-types="PostgreSQL,openGauss,SQLServer" />
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/values.xml
b/test/it/parser/src/main/resources/sql/supported/dml/values.xml
index 4337786a4a2..939d8916520 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/values.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/values.xml
@@ -18,7 +18,7 @@
<sql-cases>
<sql-case id="values_with_regexp_replace" value="SELECT REGEXP_REPLACE(e,
'pattern', 'xyz')FROM (VALUES ROW('Find pattern'), ROW(NULL), ROW('Find
pattern')) AS v(e)" db-types="MySQL" />
- <sql-case id="values_with_row" value="values ROW(1,2)"
db-types="MySQL,Presto,Doris" />
+ <sql-case id="values_with_row" value="values ROW(1,2)"
db-types="MySQL,Presto,Doris,Hive" />
<sql-case id="values_with_order_limit" value="VALUES ROW(1,-2,3),
ROW(5,7,9), ROW(4,6,8) ORDER BY column_1 desc , column_0 desc limit 10"
db-types="MySQL" />
<sql-case id="values_with_select" value="values row((select 1), 2)"
db-types="MySQL" />
</sql-cases>