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 96707ec1ae3 Add SQL parser test cases for Firebird (#37720)
96707ec1ae3 is described below

commit 96707ec1ae32a31e58ec4286291a4e07fa371ec7
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 12 20:35:06 2026 +0800

    Add SQL parser test cases for Firebird (#37720)
    
    * Add SQL parser test cases for Hive
    
    * Add SQL parser test cases for Firebird
    
    * Add SQL parser test cases for Firebird
    
    * Add SQL parser test cases for Firebird
---
 .../src/main/resources/case/dml/select-with.xml    | 25 ++++++++++++++++++++++
 .../src/main/resources/case/tcl/savepoint.xml      |  1 +
 .../resources/sql/supported/dcl/grant-user.xml     |  2 +-
 .../resources/sql/supported/dcl/revoke-user.xml    |  2 +-
 .../main/resources/sql/supported/dml/presto.xml    |  2 +-
 .../sql/supported/dml/select-expression.xml        |  2 +-
 .../sql/supported/dml/select-order-by.xml          |  2 +-
 .../sql/supported/dml/select-special-function.xml  |  2 +-
 .../resources/sql/supported/dml/select-with.xml    |  1 +
 .../main/resources/sql/supported/tcl/commit.xml    |  2 +-
 .../main/resources/sql/supported/tcl/rollback.xml  |  2 +-
 .../main/resources/sql/supported/tcl/savepoint.xml |  1 +
 .../sql/supported/tcl/set-transaction.xml          |  2 +-
 13 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/test/it/parser/src/main/resources/case/dml/select-with.xml 
b/test/it/parser/src/main/resources/case/dml/select-with.xml
index c1c46f89795..54872fa50b1 100644
--- a/test/it/parser/src/main/resources/case/dml/select-with.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-with.xml
@@ -816,4 +816,29 @@
         </from>
     </select>
 
+    <select sql-case-id="select_with_recursive_firebird">
+        <with start-index="0" stop-index="33">
+            <common-table-expression name="t" start-index="15" stop-index="33">
+                <column name="id" start-index="17" stop-index="18" />
+                <subquery-expression start-index="15" stop-index="33">
+                    <select>
+                        <projections start-index="32" stop-index="32">
+                            <expression-projection text="1" start-index="32" 
stop-index="32">
+                                <expr>
+                                    <literal-expression value="1" 
start-index="32" stop-index="32" />
+                                </expr>
+                            </expression-projection>
+                        </projections>
+                    </select>
+                </subquery-expression>
+            </common-table-expression>
+        </with>
+        <projections start-index="42" stop-index="43">
+            <column-projection name="id" start-index="42" stop-index="43" />
+        </projections>
+        <from>
+            <simple-table name="t" start-index="50" stop-index="50" />
+        </from>
+    </select>
+
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/tcl/savepoint.xml 
b/test/it/parser/src/main/resources/case/tcl/savepoint.xml
index 4a4dead5992..b04f169c0ea 100644
--- a/test/it/parser/src/main/resources/case/tcl/savepoint.xml
+++ b/test/it/parser/src/main/resources/case/tcl/savepoint.xml
@@ -19,4 +19,5 @@
 <sql-parser-test-cases>
     <savepoint sql-case-id="savepoint" savepoint-name="savepoint1" />
     <savepoint sql-case-id="savepoint_transaction" />
+    <savepoint sql-case-id="savepoint_firebird" />
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dcl/grant-user.xml 
b/test/it/parser/src/main/resources/sql/supported/dcl/grant-user.xml
index 5884e70fbe1..0d025e663c1 100644
--- a/test/it/parser/src/main/resources/sql/supported/dcl/grant-user.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dcl/grant-user.xml
@@ -17,7 +17,7 @@
   -->
 
 <sql-cases>
-    <sql-case id="grant_user_without_hostname" value="GRANT SELECT, UPDATE, 
INSERT, DELETE ON t_order to user_dev" 
db-types="Oracle,PostgreSQL,openGauss,SQLServer" />
+    <sql-case id="grant_user_without_hostname" value="GRANT SELECT, UPDATE, 
INSERT, DELETE ON t_order to user_dev" 
db-types="Oracle,PostgreSQL,openGauss,SQLServer,Firebird" />
     <sql-case id="grant_user_with_grant" value="GRANT SELECT, UPDATE, INSERT, 
DELETE ON t_order to user_dev with GRANT option" 
db-types="Oracle,PostgreSQL,openGauss,SQLServer" />
     <sql-case id="grant_role" value="GRANT role_dev to user_dev" 
db-types="Oracle,PostgreSQL,openGauss" />
     <sql-case id="grant_user_with_admin" value="GRANT ADVISOR, ALTER DATABASE 
to user_dev with admin option" db-types="Oracle" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml 
b/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
index 3de18f94bbd..8209c4967bb 100644
--- a/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dcl/revoke-user.xml
@@ -17,7 +17,7 @@
   -->
 
 <sql-cases>
-    <sql-case id="revoke_user_without_hostname" value="REVOKE SELECT, UPDATE 
on t_order from user_dev" db-types="Oracle,PostgreSQL,openGauss,SQLServer" />
+    <sql-case id="revoke_user_without_hostname" value="REVOKE SELECT, UPDATE 
on t_order from user_dev" 
db-types="Oracle,PostgreSQL,openGauss,SQLServer,Firebird" />
     <sql-case id="revoke_role" value="REVOKE role_dev from user_dev" 
db-types="Oracle,PostgreSQL,openGauss" />
     <sql-case id="revoke_user_from" value="REVOKE ADVISOR, ALTER DATABASE from 
user_dev" db-types="Oracle" />
     <sql-case id="revoke_user_with_hostname_on_db" value="REVOKE select, 
insert ON * FROM 'user_dev'@'localhost'" db-types="MySQL,Doris" />
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 f409c1004bb..9f1d1e1f0ca 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
@@ -19,7 +19,7 @@
 <sql-cases>
     <sql-case id="presto_select_literals" value="SELECT DATE '2020-01-01', 
X'1F', B'1010', TRUE, NULL FROM catalog.schem1.t_order" db-types="Presto" />
     <sql-case id="presto_select_compare_all_subquery" value="SELECT * FROM 
t_order WHERE order_id = ALL (SELECT order_id FROM t_order_item)" 
db-types="Presto" />
-    <sql-case id="presto_select_or_boolean_true" value="SELECT * FROM t_order 
WHERE flag IS TRUE OR order_id = 1" db-types="Presto" />
+    <sql-case id="presto_select_or_boolean_true" value="SELECT * FROM t_order 
WHERE flag IS TRUE OR order_id = 1" db-types="Presto,Firebird" />
     <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" />
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 d1673f76f8a..3948c4e7e90 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
@@ -47,7 +47,7 @@
     <sql-case id="select_where_with_boolean_primary_with_comparison_subquery" 
value="SELECT * FROM t_order WHERE t_order.status &gt; ALL (SELECt status FROM 
t_order_item WHERE status &gt; ?)" db-types="MySQL" />
     <sql-case id="select_where_with_predicate_with_in_subquery" value="SELECT 
* FROM t_order WHERE t_order.order_id NOT IN (SELECT order_id FROM t_order_item 
WHERE status &gt; ?)" db-types="MySQL,PostgreSQL,openGauss,Presto" />
     <sql-case id="select_where_with_predicate_with_in_expr" value="SELECT * 
FROM t_order WHERE t_order.order_id IN (?, ?, ?)" 
db-types="MySQL,PostgreSQL,openGauss,Presto" />
-    <sql-case id="select_where_with_predicate_with_between" value="SELECT * 
FROM t_order WHERE t_order.order_id BETWEEN ? AND ?" 
db-types="MySQL,Presto,Hive" />
+    <sql-case id="select_where_with_predicate_with_between" value="SELECT * 
FROM t_order WHERE t_order.order_id BETWEEN ? AND ?" 
db-types="MySQL,Presto,Hive,Firebird" />
     <sql-case id="select_where_with_predicate_with_sounds_like" value="SELECT 
* FROM t_order WHERE t_order.order_id SOUNDS LIKE '1%'" 
db-types="MySQL,Presto,Doris" />
     <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,Hive" />
     <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,Hive" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-order-by.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-order-by.xml
index ced646ec2c2..0a2349e328c 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-order-by.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-order-by.xml
@@ -34,5 +34,5 @@
     <sql-case id="select_order_by_with_table_star_table_name" value="SELECT 
t_order.* FROM t_order ORDER BY t_order.order_id" db-types="H2,MySQL" />
     <sql-case id="select_order_by_with_star_no_table_alias" value="SELECT * 
FROM t_order ORDER BY order_id" db-types="H2,MySQL" />
     <sql-case id="select_order_by_with_table_star_without_table_name" 
value="SELECT i.*, o.* FROM t_order o JOIN t_order_item i ON o.user_id = 
i.user_id AND o.order_id = i.order_id ORDER BY item_id" db-types="H2,MySQL" />
-    <sql-case id="select_order_by_expression_binary_operation" value="select * 
from t_order order by 1+1" db-types="MySQL,Presto,Doris" />
+    <sql-case id="select_order_by_expression_binary_operation" value="select * 
from t_order order by 1+1" db-types="MySQL,Presto,Doris,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 f834bed2e00..a8e4053face 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
@@ -196,7 +196,7 @@
     <sql-case id="select_is_free_lock" value="SELECT IS_FREE_LOCK('lock1')" 
db-types="MySQL" />
     <sql-case id="select_is_used_lock" value="SELECT IS_USED_LOCK('lock1')" 
db-types="MySQL" />
     <sql-case id="select_is_null" value="SELECT ISNULL(1+1)" db-types="MySQL" 
/>
-    <sql-case id="select_is_not_null" value="SELECT 1 IS NOT NULL" 
db-types="MySQL" />
+    <sql-case id="select_is_not_null" value="SELECT 1 IS NOT NULL" 
db-types="MySQL,Firebird" />
     <sql-case id="select_is_uuid" value="SELECT 
IS_UUID('6ccd780c-baba-1026-9564-5b8c656024db')" db-types="MySQL" />
     <sql-case id="select_random_bytes" value="SELECT RANDOM_BYTES(16)" 
db-types="MySQL" />
     <sql-case id="select_rank" value="SELECT RANK() FROM numbers" 
db-types="MySQL" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-with.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-with.xml
index 91a85133d66..b10501de506 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-with.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-with.xml
@@ -29,4 +29,5 @@
     <sql-case id="select_with_recursive_union_all1" value="WITH RECURSIVE 
DirectoryCTE as (SELECT * FROM table1 WHERE id = 1 AND project_id = 2 UNION ALL 
SELECT * FROM project_file_catalog t INNER JOIN DirectoryCTE cte ON 
t.project_id = cte.project_id AND t.parent_id = cte.id) SELECT * FROM 
DirectoryCTE ORDER BY level" db-types="MySQL" />
     <sql-case id="select_with_oracle_recursive_union_all1" value="WITH 
DirectoryCTE as (SELECT table1.col1, table1.col2 FROM table1 WHERE id = 1 AND 
project_id = 2 UNION ALL SELECT t.col1, t.col2 FROM project_file_catalog t 
INNER JOIN DirectoryCTE cte ON t.project_id = cte.project_id AND t.parent_id = 
cte.id) SELECT DirectoryCTE.col1, DirectoryCTE.col2 FROM DirectoryCTE ORDER BY 
level" db-types="Oracle" />
     <sql-case id="select_with_recursive_union_all2" value="WITH cte AS (SELECT 
1 AS col1, 2 AS col2 UNION ALL SELECT 3, 4) SELECT col1, col2 FROM cte" 
db-types="MySQL" />
+    <sql-case id="select_with_recursive_firebird" value="WITH RECURSIVE t(id) 
AS (SELECT 1) SELECT id FROM t" db-types="Firebird" />
 </sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/tcl/commit.xml 
b/test/it/parser/src/main/resources/sql/supported/tcl/commit.xml
index 64cc670af4e..41e2c99ac5c 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/commit.xml
+++ b/test/it/parser/src/main/resources/sql/supported/tcl/commit.xml
@@ -17,7 +17,7 @@
   -->
 
 <sql-cases>
-    <sql-case id="commit" value="COMMIT" 
db-types="MySQL,Oracle,SQLServer,PostgreSQL,openGauss,Doris" />
+    <sql-case id="commit" value="COMMIT" 
db-types="MySQL,Oracle,SQLServer,PostgreSQL,openGauss,Doris,Firebird" />
     <sql-case id="commit_transaction" value="COMMIT TRANSACTION" 
db-types="SQLServer" />
     <sql-case id="commit_with_name" value="COMMIT TRANSACTION transaction1" 
db-types="SQLServer" />
     <sql-case id="commit_with_comment" value="COMMIT COMMENT 'comment1'" 
db-types="Oracle" />
diff --git a/test/it/parser/src/main/resources/sql/supported/tcl/rollback.xml 
b/test/it/parser/src/main/resources/sql/supported/tcl/rollback.xml
index f0058f481da..a8012522c71 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/rollback.xml
+++ b/test/it/parser/src/main/resources/sql/supported/tcl/rollback.xml
@@ -17,7 +17,7 @@
   -->
 
 <sql-cases>
-    <sql-case id="rollback" value="ROLLBACK" 
db-types="MySQL,Oracle,PostgreSQL,openGauss,SQLServer,Doris" />
+    <sql-case id="rollback" value="ROLLBACK" 
db-types="MySQL,Oracle,PostgreSQL,openGauss,SQLServer,Doris,Firebird" />
     <sql-case id="rollback_transaction" value="ROLLBACK TRAN @TransactionName" 
db-types="SQLServer" />
     <sql-case id="rollback_with_name" value="ROLLBACK TRANSACTION 
transaction1" db-types="SQLServer" />
     <sql-case id="rollback_to_savepoint" value="ROLLBACK TO savepoint1" 
db-types="MySQL,PostgreSQL,openGauss,Oracle,Doris" />
diff --git a/test/it/parser/src/main/resources/sql/supported/tcl/savepoint.xml 
b/test/it/parser/src/main/resources/sql/supported/tcl/savepoint.xml
index 1e8b81d5ac8..5eeadb30575 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/savepoint.xml
+++ b/test/it/parser/src/main/resources/sql/supported/tcl/savepoint.xml
@@ -18,5 +18,6 @@
 
 <sql-cases>
     <sql-case id="savepoint" value="SAVEPOINT savepoint1" 
db-types="MySQL,PostgreSQL,openGauss,Oracle,Doris" />
+    <sql-case id="savepoint_firebird" value="SAVEPOINT savepoint1" 
db-types="Firebird" />
     <sql-case id="savepoint_transaction" value="SAVE TRANSACTION 
ProcedureSave" db-types="SQLServer" />
 </sql-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml 
b/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml
index 6e499e5d222..c9aa3a38d5d 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml
+++ b/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml
@@ -17,7 +17,7 @@
   -->
 
 <sql-cases>
-    <sql-case id="set_transaction" value="SET TRANSACTION ISOLATION LEVEL 
REPEATABLE READ" db-types="MySQL,PostgreSQL,openGauss,SQLServer,Doris" />
+    <sql-case id="set_transaction" value="SET TRANSACTION ISOLATION LEVEL 
REPEATABLE READ" db-types="MySQL,PostgreSQL,openGauss,SQLServer,Doris,Firebird" 
/>
     <sql-case id="set_global_transaction" value="SET GLOBAL TRANSACTION 
ISOLATION LEVEL REPEATABLE READ" db-types="MySQL,Doris" />
     <sql-case id="set_session_transaction_doris" value="SET SESSION 
TRANSACTION ISOLATION LEVEL READ COMMITTED" db-types="Doris" />
     <sql-case id="set_transaction_read_only" value="SET TRANSACTION READ ONLY" 
db-types="MySQL,Oracle,Doris" />

Reply via email to