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

Gabriel39 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new c01cc8cc51d [test](regression) Expand Iceberg JDBC catalog coverage 
(#69417)
c01cc8cc51d is described below

commit c01cc8cc51d0e2944c63404aa7c160c831edcfca
Author: Gabriel <[email protected]>
AuthorDate: Thu Oct 22 21:04:44 2026 +0800

    [test](regression) Expand Iceberg JDBC catalog coverage (#69417)
    
    ### What problem does this PR solve?
    
    Issue Number: N/A
    
    Related PR: N/A
    
    The Iceberg JDBC catalog suite exercises PostgreSQL basic reads/writes
    and a small MySQL smoke test, leaving row-level DML and many metadata
    commits untested on JDBC backends.
    
    Run a shared set of scenarios on both PostgreSQL and MySQL:
    - UPDATE, partial DELETE, all MERGE actions, partition-key updates,
    no-match DML and historical tag reads across Parquet/ORC and Iceberg
    V2/V3.
    - CTAS, table rename, column addition/rename/type promotion/drop,
    catalog refresh, static/dynamic overwrite and partition evolution.
    - Branch writes and fast-forward, tag/snapshot reads, rollback and
    explicit snapshot expiration.
    - Manifest and data-file rewrites, checking that work was committed and
    live rows are preserved.
    - Rejection of row-level DML on V1 and copy-on-write tables without
    changing data.
    - Metadata isolation when changing and restoring
    iceberg.jdbc.catalog_name.
    
    Adds 98 ordered result checks, generated by the regression framework,
    while preserving existing checks.
    
    ### Release note
    
    None
    
    ### Check List (For Author)
    
    - Test
        - [x] Regression test
        - [ ] Unit Test
        - [ ] Manual test
        - [ ] No need to test or manual test.
    
    Generated the output with `-forceGenOut`, then ran the suite in
    comparison mode using PostgreSQL 16, MySQL 8.0 and MinIO with prebuilt
    Doris development binaries (reported version `doris-0.0.0-8264f390bd`).
    
      ```sh
    ./run-regression-test.sh --run -d external_table_p0/iceberg -s
    test_iceberg_jdbc_catalog -parallel 1 -suiteParallel 1
      ```
    
    Both backend paths ran; no suite was skipped. `git diff --check` also
    passed. CI validation against the PR head remains pending.
    
    - Behavior changed:
        - [x] No.
        - [ ] Yes.
    
    - Does this need documentation?
        - [x] No.
        - [ ] Yes.
    
    ### Check List (For Reviewer who merge this PR)
    
    - [ ] Confirm the release note
    - [ ] Confirm test cases
    - [ ] Confirm document
    - [ ] Add branch pick label
---
 .../iceberg/test_iceberg_jdbc_catalog.out          | 456 +++++++++++++++++++++
 .../iceberg/test_iceberg_jdbc_catalog.groovy       | 171 ++++++++
 2 files changed, 627 insertions(+)

diff --git 
a/regression-test/data/external_table_p0/iceberg/test_iceberg_jdbc_catalog.out 
b/regression-test/data/external_table_p0/iceberg/test_iceberg_jdbc_catalog.out
index 9e7a05f3757..0c3e1d43617 100644
--- 
a/regression-test/data/external_table_p0/iceberg/test_iceberg_jdbc_catalog.out
+++ 
b/regression-test/data/external_table_p0/iceberg/test_iceberg_jdbc_catalog.out
@@ -36,7 +36,463 @@ true        3       300000000000    3.5     4.5     345.67  
test    2025-01-03      2025-01-03T12:00
 4      Item4   B       2025-01-02
 5      Item5   A       2025-01-03
 
+-- !postgresql_parquet_v2_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_parquet_v2_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !postgresql_parquet_v2_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !postgresql_parquet_v2_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_parquet_v2_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_parquet_v2_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_orc_v2_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_orc_v2_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !postgresql_orc_v2_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !postgresql_orc_v2_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_orc_v2_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_orc_v2_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_parquet_v3_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_parquet_v3_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !postgresql_parquet_v3_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !postgresql_parquet_v3_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_parquet_v3_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_parquet_v3_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_orc_v3_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_orc_v3_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !postgresql_orc_v3_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !postgresql_orc_v3_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_orc_v3_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !postgresql_orc_v3_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_ctas_schema --
+1      A       100     \N
+4      D       40      \N
+5      C       50      \N
+
+-- !postgresql_schema_write --
+1      A       100
+4      D       40
+5      C       50
+6      E       6000000000
+
+-- !postgresql_reload --
+1      A       100
+4      D       40
+5      C       50
+6      E       6000000000
+
+-- !postgresql_dynamic_overwrite --
+3      B
+4      A
+
+-- !postgresql_static_overwrite --
+5      C
+
+-- !postgresql_partition_add --
+5      C
+6      D
+
+-- !postgresql_partition_drop --
+5      C
+6      D
+7      E
+
+-- !postgresql_partition_filter --
+5      C
+7      E
+
+-- !postgresql_main_before_publish --
+1      base
+
+-- !postgresql_branch --
+1      base
+2      branch
+
+-- !postgresql_main_after_publish --
+1      base
+2      branch
+
+-- !postgresql_snapshot --
+1      base
+
+-- !postgresql_tag --
+1      base
+
+-- !postgresql_rollback --
+1      base
+
+-- !postgresql_refs --
+main   BRANCH
+
+-- !postgresql_expire_snapshot_count --
+1
+
+-- !postgresql_after_expire --
+1      base
+
+-- !postgresql_rewrite_manifests_committed --
+true
+
+-- !postgresql_rewrite_manifests --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_compact_committed --
+true   true
+
+-- !postgresql_compact --
+1      A       100
+4      D       40
+5      C       50
+
+-- !postgresql_v1_unchanged --
+1
+2
+
+-- !postgresql_cow_unchanged --
+1
+2
+
+-- !postgresql_isolated_namespaces --
+information_schema
+mysql
+
+-- !postgresql_restored_namespace --
+1      A       100
+4      D       40
+5      C       50
+6      E       6000000000
+
 -- !mysql_select --
 1      Alice   2025-01-01T10:00
 2      Bob     2025-01-02T11:00
 
+-- !mysql_parquet_v2_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_parquet_v2_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !mysql_parquet_v2_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !mysql_parquet_v2_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_parquet_v2_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_parquet_v2_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_orc_v2_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_orc_v2_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !mysql_orc_v2_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !mysql_orc_v2_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_orc_v2_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_orc_v2_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_parquet_v3_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_parquet_v3_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !mysql_parquet_v3_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !mysql_parquet_v3_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_parquet_v3_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_parquet_v3_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_orc_v3_update --
+1      A       11
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_orc_v3_delete --
+1      A       11
+3      B       30
+4      B       40
+
+-- !mysql_orc_v3_merge --
+1      A       100
+4      B       40
+5      C       50
+
+-- !mysql_orc_v3_partition_move --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_orc_v3_old_tag --
+1      A       10
+2      A       20
+3      B       30
+4      B       40
+
+-- !mysql_orc_v3_no_match --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_ctas_schema --
+1      A       100     \N
+4      D       40      \N
+5      C       50      \N
+
+-- !mysql_schema_write --
+1      A       100
+4      D       40
+5      C       50
+6      E       6000000000
+
+-- !mysql_reload --
+1      A       100
+4      D       40
+5      C       50
+6      E       6000000000
+
+-- !mysql_dynamic_overwrite --
+3      B
+4      A
+
+-- !mysql_static_overwrite --
+5      C
+
+-- !mysql_partition_add --
+5      C
+6      D
+
+-- !mysql_partition_drop --
+5      C
+6      D
+7      E
+
+-- !mysql_partition_filter --
+5      C
+7      E
+
+-- !mysql_main_before_publish --
+1      base
+
+-- !mysql_branch --
+1      base
+2      branch
+
+-- !mysql_main_after_publish --
+1      base
+2      branch
+
+-- !mysql_snapshot --
+1      base
+
+-- !mysql_tag --
+1      base
+
+-- !mysql_rollback --
+1      base
+
+-- !mysql_refs --
+main   BRANCH
+
+-- !mysql_expire_snapshot_count --
+1
+
+-- !mysql_after_expire --
+1      base
+
+-- !mysql_rewrite_manifests_committed --
+true
+
+-- !mysql_rewrite_manifests --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_compact_committed --
+true   true
+
+-- !mysql_compact --
+1      A       100
+4      D       40
+5      C       50
+
+-- !mysql_v1_unchanged --
+1
+2
+
+-- !mysql_cow_unchanged --
+1
+2
+
+-- !mysql_isolated_namespaces --
+information_schema
+mysql
+
+-- !mysql_restored_namespace --
+1      A       100
+4      D       40
+5      C       50
+6      E       6000000000
+
diff --git 
a/regression-test/suites/external_table_p0/iceberg/test_iceberg_jdbc_catalog.groovy
 
b/regression-test/suites/external_table_p0/iceberg/test_iceberg_jdbc_catalog.groovy
index c04e3404938..10ab5bc8cb5 100644
--- 
a/regression-test/suites/external_table_p0/iceberg/test_iceberg_jdbc_catalog.groovy
+++ 
b/regression-test/suites/external_table_p0/iceberg/test_iceberg_jdbc_catalog.groovy
@@ -123,6 +123,173 @@ suite("test_iceberg_jdbc_catalog", "p0,external") {
         }
     }
     
+    // Run the same commit/read-back checks against both JDBC metadata 
implementations.
+    def checkCapabilities = { String backend, String dorisCatalog, String 
metadataCatalog, String database ->
+        def check = { String name, String query ->
+            quickTest("${backend}_${name}", query, true)
+        }
+
+        for (def variant : [[format: "parquet", version: 2], [format: "orc", 
version: 2],
+                            [format: "parquet", version: 3], [format: "orc", 
version: 3]]) {
+            String format = variant.format
+            String prefix = "${format}_v${variant.version}"
+            sql """DROP TABLE IF EXISTS jdbc_row_changes"""
+            sql """
+                CREATE TABLE jdbc_row_changes (id INT, category STRING, amount 
INT)
+                PARTITION BY LIST (category) ()
+                PROPERTIES (
+                    'format-version' = '${variant.version}',
+                    'write.format.default' = '${format}',
+                    'write.delete.mode' = 'merge-on-read',
+                    'write.update.mode' = 'merge-on-read',
+                    'write.merge.mode' = 'merge-on-read'
+                )
+            """
+            sql """INSERT INTO jdbc_row_changes VALUES
+                    (1, 'A', 10), (2, 'A', 20), (3, 'B', 30), (4, 'B', 40)"""
+            sql """ALTER TABLE jdbc_row_changes CREATE TAG before_dml"""
+            sql """UPDATE jdbc_row_changes SET amount = amount + 1 WHERE id = 
1"""
+            check("${prefix}_update", "SELECT * FROM jdbc_row_changes ORDER BY 
id")
+            // A partial partition delete exercises V2 position deletes or V3 
deletion vectors.
+            sql """DELETE FROM jdbc_row_changes WHERE amount = 20"""
+            check("${prefix}_delete", "SELECT * FROM jdbc_row_changes ORDER BY 
id")
+            sql """
+                MERGE INTO jdbc_row_changes t
+                USING (SELECT 1 AS id, 'A' AS category, 100 AS amount, 'U' AS 
op
+                       UNION ALL SELECT 3, 'B', 30, 'D'
+                       UNION ALL SELECT 5, 'C', 50, 'I') s
+                ON t.id = s.id
+                WHEN MATCHED AND s.op = 'D' THEN DELETE
+                WHEN MATCHED THEN UPDATE SET category = s.category, amount = 
s.amount
+                WHEN NOT MATCHED THEN INSERT (id, category, amount) VALUES 
(s.id, s.category, s.amount)
+            """
+            check("${prefix}_merge", "SELECT * FROM jdbc_row_changes ORDER BY 
id")
+            // Moving a row must remove it from its old partition without 
hiding the other rows.
+            sql """UPDATE jdbc_row_changes SET category = 'D' WHERE id = 4"""
+            check("${prefix}_partition_move", "SELECT * FROM jdbc_row_changes 
ORDER BY id")
+            check("${prefix}_old_tag", "SELECT * FROM 
jdbc_row_changes@tag(before_dml) ORDER BY id")
+            sql """UPDATE jdbc_row_changes SET amount = 0 WHERE id = 99"""
+            sql """DELETE FROM jdbc_row_changes WHERE id = 99"""
+            check("${prefix}_no_match", "SELECT * FROM jdbc_row_changes ORDER 
BY id")
+        }
+
+        sql """DROP TABLE IF EXISTS jdbc_ctas_renamed"""
+        sql """DROP TABLE IF EXISTS jdbc_ctas"""
+        sql """CREATE TABLE jdbc_ctas PROPERTIES ('format-version' = '2')
+                AS SELECT id, category, amount FROM jdbc_row_changes"""
+        sql """ALTER TABLE jdbc_ctas RENAME jdbc_ctas_renamed"""
+        sql """ALTER TABLE jdbc_ctas_renamed ADD COLUMN note STRING"""
+        sql """ALTER TABLE jdbc_ctas_renamed RENAME COLUMN amount total"""
+        sql """ALTER TABLE jdbc_ctas_renamed MODIFY COLUMN total BIGINT"""
+        check("ctas_schema", "SELECT * FROM jdbc_ctas_renamed ORDER BY id")
+        sql """INSERT INTO jdbc_ctas_renamed VALUES (6, 'E', 6000000000, 
'new')"""
+        sql """ALTER TABLE jdbc_ctas_renamed DROP COLUMN note"""
+        check("schema_write", "SELECT * FROM jdbc_ctas_renamed ORDER BY id")
+        sql """REFRESH CATALOG ${dorisCatalog}"""
+        check("reload", "SELECT * FROM jdbc_ctas_renamed ORDER BY id")
+
+        sql """DROP TABLE IF EXISTS jdbc_overwrite"""
+        sql """CREATE TABLE jdbc_overwrite (id INT, category STRING)
+                PARTITION BY LIST (category) () PROPERTIES ('format-version' = 
'2')"""
+        sql """INSERT INTO jdbc_overwrite VALUES (1, 'A'), (2, 'A'), (3, 
'B')"""
+        sql """INSERT OVERWRITE TABLE jdbc_overwrite VALUES (4, 'A')"""
+        check("dynamic_overwrite", "SELECT * FROM jdbc_overwrite ORDER BY id")
+        // The suite pins dynamic mode; restore it after checking static 
whole-table replacement.
+        sql """SET iceberg_partition_overwrite_mode = 'static'"""
+        try {
+            sql """INSERT OVERWRITE TABLE jdbc_overwrite VALUES (5, 'C')"""
+            check("static_overwrite", "SELECT * FROM jdbc_overwrite ORDER BY 
id")
+        } finally {
+            sql """SET iceberg_partition_overwrite_mode = 'dynamic'"""
+        }
+
+        sql """ALTER TABLE jdbc_overwrite ADD PARTITION KEY bucket(4, id)"""
+        sql """INSERT INTO jdbc_overwrite VALUES (6, 'D')"""
+        check("partition_add", "SELECT * FROM jdbc_overwrite ORDER BY id")
+        sql """ALTER TABLE jdbc_overwrite DROP PARTITION KEY category"""
+        sql """INSERT INTO jdbc_overwrite VALUES (7, 'E')"""
+        check("partition_drop", "SELECT * FROM jdbc_overwrite ORDER BY id")
+        check("partition_filter", "SELECT * FROM jdbc_overwrite WHERE category 
IN ('C', 'E') ORDER BY id")
+
+        sql """DROP TABLE IF EXISTS jdbc_refs"""
+        sql """CREATE TABLE jdbc_refs (id INT, name STRING)
+                PROPERTIES ('format-version' = '2')"""
+        sql """INSERT INTO jdbc_refs VALUES (1, 'base')"""
+        String baseSnapshot = sql("""SELECT snapshot_id FROM 
jdbc_refs\$snapshots""")[0][0].toString()
+        sql """ALTER TABLE jdbc_refs CREATE TAG base_tag"""
+        sql """ALTER TABLE jdbc_refs CREATE BRANCH audit_branch"""
+        sql """INSERT INTO jdbc_refs@branch(audit_branch) VALUES (2, 
'branch')"""
+        check("main_before_publish", "SELECT * FROM jdbc_refs ORDER BY id")
+        check("branch", "SELECT * FROM jdbc_refs@branch(audit_branch) ORDER BY 
id")
+        sql """ALTER TABLE jdbc_refs EXECUTE fast_forward('branch' = 'main', 
'to' = 'audit_branch')"""
+        check("main_after_publish", "SELECT * FROM jdbc_refs ORDER BY id")
+        String branchSnapshot = sql("""SELECT snapshot_id FROM jdbc_refs\$refs 
WHERE name = 'main'""")[0][0].toString()
+        check("snapshot", "SELECT * FROM jdbc_refs FOR VERSION AS OF 
${baseSnapshot} ORDER BY id")
+        check("tag", "SELECT * FROM jdbc_refs@tag(base_tag) ORDER BY id")
+        sql """ALTER TABLE jdbc_refs DROP BRANCH audit_branch"""
+        sql """ALTER TABLE jdbc_refs DROP TAG base_tag"""
+        sql """ALTER TABLE jdbc_refs EXECUTE 
rollback_to_snapshot('snapshot_id' = '${baseSnapshot}')"""
+        check("rollback", "SELECT * FROM jdbc_refs ORDER BY id")
+        check("refs", "SELECT name, type FROM jdbc_refs\$refs ORDER BY name")
+        sql """ALTER TABLE jdbc_refs EXECUTE expire_snapshots('snapshot_ids' = 
'${branchSnapshot}')"""
+        check("expire_snapshot_count", "SELECT count(*) FROM 
jdbc_refs\$snapshots")
+        check("after_expire", "SELECT * FROM jdbc_refs ORDER BY id")
+
+        // Counts vary with writer parallelism; require actual work without 
recording file counts or sizes.
+        quickRunTest("${backend}_rewrite_manifests_committed",
+                "ALTER TABLE jdbc_row_changes EXECUTE rewrite_manifests()", 
false,
+                { row -> [row[0].toLong() > 0] })
+        check("rewrite_manifests", "SELECT * FROM jdbc_row_changes ORDER BY 
id")
+        quickRunTest("${backend}_compact_committed",
+                "ALTER TABLE jdbc_row_changes EXECUTE 
rewrite_data_files('min-input-files' = '1')", false,
+                { row -> [row[0].toLong() > 0, row[1].toLong() > 0] })
+        check("compact", "SELECT * FROM jdbc_row_changes ORDER BY id")
+
+        sql """DROP TABLE IF EXISTS jdbc_v1"""
+        sql """CREATE TABLE jdbc_v1 (id INT) PROPERTIES ('format-version' = 
'1')"""
+        sql """INSERT INTO jdbc_v1 VALUES (1), (2)"""
+        for (String statement : ["UPDATE jdbc_v1 SET id = 3 WHERE id = 1",
+                                 "DELETE FROM jdbc_v1 WHERE id = 1",
+                                 "MERGE INTO jdbc_v1 t USING (SELECT 1 AS id) 
s ON t.id = s.id "
+                                         + "WHEN MATCHED THEN UPDATE SET id = 
3"]) {
+            test {
+                sql statement
+                exception "must have format version 2 or higher for position 
deletes"
+            }
+        }
+        check("v1_unchanged", "SELECT * FROM jdbc_v1 ORDER BY id")
+
+        sql """DROP TABLE IF EXISTS jdbc_cow"""
+        sql """CREATE TABLE jdbc_cow (id INT) PROPERTIES (
+                    'format-version' = '2',
+                    'write.delete.mode' = 'copy-on-write',
+                    'write.update.mode' = 'copy-on-write',
+                    'write.merge.mode' = 'copy-on-write')"""
+        sql """INSERT INTO jdbc_cow VALUES (1), (2)"""
+        for (String statement : ["UPDATE jdbc_cow SET id = 3 WHERE id = 1",
+                                 "DELETE FROM jdbc_cow WHERE id = 1",
+                                 "MERGE INTO jdbc_cow t USING (SELECT 1 AS id) 
s ON t.id = s.id "
+                                         + "WHEN MATCHED THEN UPDATE SET id = 
3"]) {
+            test {
+                sql statement
+                exception "copy-on-write"
+            }
+        }
+        check("cow_unchanged", "SELECT * FROM jdbc_cow ORDER BY id")
+
+        // catalog_name, rather than the Doris catalog name or JDBC URI, 
isolates metadata in the same database.
+        sql """ALTER CATALOG ${dorisCatalog} SET PROPERTIES (
+                    'iceberg.jdbc.catalog_name' = 
'${metadataCatalog}_isolated')"""
+        try {
+            check("isolated_namespaces", "SHOW DATABASES FROM ${dorisCatalog}")
+        } finally {
+            sql """ALTER CATALOG ${dorisCatalog} SET PROPERTIES (
+                        'iceberg.jdbc.catalog_name' = '${metadataCatalog}')"""
+            sql """USE ${dorisCatalog}.${database}"""
+        }
+        check("restored_namespace", "SELECT * FROM jdbc_ctas_renamed ORDER BY 
id")
+    }
+
     try {
         // Clean up existing catalog
         sql """DROP CATALOG IF EXISTS ${catalog_name}"""
@@ -278,6 +445,8 @@ suite("test_iceberg_jdbc_catalog", "p0,external") {
         """
         order_qt_after_overwrite """SELECT * FROM test_partitioned ORDER BY 
id"""
 
+        checkCapabilities("postgresql", catalog_name, 
iceberg_jdbc_catalog_name, db_name)
+
         // Test: Drop table
         sql """DROP TABLE IF EXISTS test_datatypes"""
         sql """DROP TABLE IF EXISTS test_partitioned"""
@@ -345,6 +514,8 @@ suite("test_iceberg_jdbc_catalog", "p0,external") {
                 
                 order_qt_mysql_select """SELECT * FROM test_mysql_catalog 
ORDER BY id"""
                 
+                checkCapabilities("mysql", mysql_catalog_name, 
iceberg_jdbc_mysql_catalog_name, mysql_db_name)
+
                 sql """DROP TABLE IF EXISTS test_mysql_catalog"""
                 sql """DROP DATABASE IF EXISTS ${mysql_db_name} FORCE"""
                 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to