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]