This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new 7548f90f803 branch-4.0: [fix](test) fix unstable iceberg test cases
#60095 (#60097)
7548f90f803 is described below
commit 7548f90f80353952b2f07585f019594e0d95ff94
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Sat Jan 24 18:28:40 2026 +0800
branch-4.0: [fix](test) fix unstable iceberg test cases #60095 (#60097)
bp #60095
---
.../datasource/iceberg/IcebergMetadataOps.java | 16 ++++++++++-----
.../iceberg_and_internal_nested_namespace.out | 14 -------------
.../iceberg_and_internal_nested_namespace.groovy | 23 ++++++++++++++--------
3 files changed, 26 insertions(+), 27 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataOps.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataOps.java
index aee6d8833b3..fa764f9d06b 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataOps.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergMetadataOps.java
@@ -187,7 +187,7 @@ public class IcebergMetadataOps implements
ExternalMetadataOps {
// but in reality, Iceberg's return includes views. Therefore,
we added a filter to exclude views.
if (catalog instanceof ViewCatalog) {
views = ((ViewCatalog)
catalog).listViews(getNamespace(dbName))
-
.stream().map(TableIdentifier::name).collect(Collectors.toList());
+
.stream().map(TableIdentifier::name).collect(Collectors.toList());
} else {
views = Collections.emptyList();
}
@@ -195,12 +195,15 @@ public class IcebergMetadataOps implements
ExternalMetadataOps {
return
tableIdentifiers.stream().map(TableIdentifier::name).collect(Collectors.toList());
} else {
return tableIdentifiers.stream()
- .map(TableIdentifier::name)
- .filter(name ->
!views.contains(name)).collect(Collectors.toList());
+ .map(TableIdentifier::name)
+ .filter(name ->
!views.contains(name)).collect(Collectors.toList());
}
});
+ } catch (RuntimeException e) {
+ // We want to catch real exception like NoSuchNamespaceException
and throw it directly
+ throw e;
} catch (Exception e) {
- throw new RuntimeException("Failed to list table names, error
message is:" + e.getMessage(), e);
+ throw new RuntimeException("Failed to list table names, error
message is: " + e.getMessage(), e);
}
}
@@ -966,7 +969,10 @@ public class IcebergMetadataOps implements
ExternalMetadataOps {
try {
return executionAuthenticator.execute(() ->
((ViewCatalog) catalog).listViews(getNamespace(db))
-
.stream().map(TableIdentifier::name).collect(Collectors.toList()));
+
.stream().map(TableIdentifier::name).collect(Collectors.toList()));
+ } catch (RuntimeException e) {
+ // We want to catch real exception like NoSuchNamespaceException
and throw it directly
+ throw e;
} catch (Exception e) {
throw new RuntimeException("Failed to list view names, error
message is:" + e.getMessage(), e);
}
diff --git
a/regression-test/data/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.out
b/regression-test/data/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.out
index 4432b08854c..b4b3deb56ec 100644
---
a/regression-test/data/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.out
+++
b/regression-test/data/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.out
@@ -1,8 +1,6 @@
-- This file is automatically generated. You should know what you did if you
want to edit this
-- !sql01 --
--- !sql02 --
-
-- !sql03 --
ns1
@@ -43,16 +41,11 @@ nested_tbl3
-- !sql15 --
--- !sql16 --
-ns1.ns2
-
-- !sql17 --
ns1.ns2
-- !sql18 --
--- !sql19 --
-
-- !sql20 --
-- !sql21 --
@@ -61,8 +54,6 @@ ns1.ns2
-- !sql22 --
ns1.ns2.ns3
--- !sql23 --
-
-- !sql24 --
-- !sql25 --
@@ -74,16 +65,11 @@ ns1.ns2.ns3
-- !sql261 --
104
--- !sql27 --
-ns1.ns2
-
-- !sql28 --
-- !sql29 --
104
--- !sql30 --
-
-- !sql31 --
105
diff --git
a/regression-test/suites/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.groovy
b/regression-test/suites/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.groovy
index 7f088bf57f4..be6d39deef3 100644
---
a/regression-test/suites/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.groovy
+++
b/regression-test/suites/external_table_p0/iceberg/iceberg_and_internal_nested_namespace.groovy
@@ -30,7 +30,7 @@ suite("iceberg_and_internal_nested_namespace",
"p0,external,doris,external_docke
// Helper function to execute qt_sql with retry on NoSuchNamespaceException
// If exception occurs, refresh catalog and retry once
- def qtWithRefreshRetry = { String tag, String sqlStmt ->
+ def qtWithRefreshRetry = { String tag, String sqlStmt, String res ->
def maxRetries = 2
def retryCount = 0
def success = false
@@ -38,7 +38,14 @@ suite("iceberg_and_internal_nested_namespace",
"p0,external,doris,external_docke
while (!success && retryCount < maxRetries) {
try {
// Use owner to access suite methods in closure
- owner."qt_${tag}"(sqlStmt)
+ def actual_res = owner.sql("""${sqlStmt}""")
+ println(actual_res)
+ if (res.equals(""))
+ assertTrue(actual_res.size() == 0)
+ else {
+ assertTrue(actual_res.size() > 0)
+ assertEquals(res, actual_res[0][0])
+ }
success = true
} catch (Exception e) {
def errorMsg = e.getMessage()
@@ -145,7 +152,7 @@ suite("iceberg_and_internal_nested_namespace",
"p0,external,doris,external_docke
sql """drop database if exists `ns1` force"""
qt_sql01 """show databases like 'ns1.ns2.ns3'""" // empty
sql """refresh catalog ${catalog_name}"""
- qtWithRefreshRetry("sql02", """show databases like 'ns1.ns2.ns3'""") //
empty
+ qtWithRefreshRetry("sql02", """show databases like 'ns1.ns2.ns3'""", "")
// empty
sql """create database `ns1.ns2.ns3`"""
// will see 3 ns, flat
@@ -205,13 +212,13 @@ suite("iceberg_and_internal_nested_namespace",
"p0,external,doris,external_docke
sql """drop database `ns1.ns2` force"""
qt_sql15 """show databases like "ns1.ns2"""" // empty
sql """refresh catalog ${catalog_name}"""
- qtWithRefreshRetry("sql16", """show databases like "ns1.ns2"""") // 1
+ qtWithRefreshRetry("sql16", """show databases like "ns1.ns2"""",
"ns1.ns2") // 1
// then we drop ns1.ns2.ns3, after refresh, ns1.ns2 also disappear
sql """drop database `ns1.ns2.ns3` force"""
qt_sql17 """show databases like "ns1.ns2"""" // 1
qt_sql18 """show databases like "ns1.ns2.ns3"""" // empty
sql """refresh catalog ${catalog_name}"""
- qtWithRefreshRetry("sql19", """show databases like "ns1.ns2"""") // empty
+ qtWithRefreshRetry("sql19", """show databases like "ns1.ns2"""", "") //
empty
qt_sql20 """show databases like "ns1.ns2.ns3"""" // empty
// recreate ns1.ns2.ns3
@@ -221,7 +228,7 @@ suite("iceberg_and_internal_nested_namespace",
"p0,external,doris,external_docke
// drop ns1.ns2.ns3, and ns1.ns2 will disappear too
sql """drop database `ns1.ns2.ns3`"""
sql """refresh catalog ${catalog_name}"""
- qtWithRefreshRetry("sql23", """show databases like "ns1.ns2"""") // empty
+ qtWithRefreshRetry("sql23", """show databases like "ns1.ns2"""", "") //
empty
qt_sql24 """show databases like "ns1.ns2.ns3"""" // empty
// recreate ns1.ns2.ns3, and create table in ns1.ns2
@@ -234,13 +241,13 @@ suite("iceberg_and_internal_nested_namespace",
"p0,external,doris,external_docke
// drop ns1.ns2.ns3, ns1.ns2 will still exist
sql """drop database `ns1.ns2.ns3`"""
sql """refresh catalog ${catalog_name}"""
- qtWithRefreshRetry("sql27", """show databases like "ns1.ns2"""") // 1
+ qtWithRefreshRetry("sql27", """show databases like "ns1.ns2"""",
"ns1.ns2") // 1
qt_sql28 """show databases like "ns1.ns2.ns3"""" // empty
qt_sql29 """select * from `ns1.ns2`.test_table2"""
// drop `ns1.ns2`.test_table2, and then ns1.ns2 will disappeal
sql """drop table `ns1.ns2`.test_table2"""
sql """refresh catalog ${catalog_name}"""
- qtWithRefreshRetry("sql30", """show databases like "ns1.ns2"""") // empty
+ qtWithRefreshRetry("sql30", """show databases like "ns1.ns2"""", "") //
empty
// test dropping and creating table in nested ns spark created
sql """drop table if exists `nested.db1`.spark_table"""
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]