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 a3faa308c02 branch-4.0: [test](nerieds)fix sql cache with mtmv test
case #57366 (#60760)
a3faa308c02 is described below
commit a3faa308c02a1c1ac31cf29e4c254b0dd8ed5ab5
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Sat Feb 14 20:42:02 2026 +0800
branch-4.0: [test](nerieds)fix sql cache with mtmv test case #57366 (#60760)
Cherry-picked from #57366
Co-authored-by: zfr95 <[email protected]>
---
.../nereids_p0/cache/mtmv_with_sql_cache.groovy | 16 +-
.../nereids_p0/cache/mv_with_sql_cache.groovy | 336 ++++++++++++++-------
2 files changed, 236 insertions(+), 116 deletions(-)
diff --git a/regression-test/suites/nereids_p0/cache/mtmv_with_sql_cache.groovy
b/regression-test/suites/nereids_p0/cache/mtmv_with_sql_cache.groovy
index d10b015a553..16831a003f5 100644
--- a/regression-test/suites/nereids_p0/cache/mtmv_with_sql_cache.groovy
+++ b/regression-test/suites/nereids_p0/cache/mtmv_with_sql_cache.groovy
@@ -185,7 +185,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -286,7 +285,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -401,7 +399,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -504,7 +501,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -542,7 +538,6 @@ suite("mtmv_with_sql_cache") {
sql "REFRESH MATERIALIZED VIEW ${mv_name1} AUTO;"
waitingMTMVTaskFinishedByMvName(mv_name1)
- sleep(10000)
assertHasCache "select * from ${mv_name1}"
assertHasCache mtmv_sql1
assertHasCache "select * from ${nested_mv_name1}"
@@ -599,7 +594,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -635,7 +629,6 @@ suite("mtmv_with_sql_cache") {
// refresh mtmv complete
sql "REFRESH MATERIALIZED VIEW ${mv_name1}
complete;"
- sleep(10000)
assertNoCache "select * from ${mv_name1}"
assertNoCache mtmv_sql1
assertHasCache "select * from ${nested_mv_name1}"
@@ -699,7 +692,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -735,7 +727,6 @@ suite("mtmv_with_sql_cache") {
// base table insert overwrite
sql "INSERT OVERWRITE table ${tb_name1}
PARTITION(p5) VALUES (5, 6);"
- sleep(10000)
assertHasCache "select * from ${mv_name1}"
assertNoCache mtmv_sql1
assertHasCache "select * from ${nested_mv_name1}"
@@ -746,7 +737,6 @@ suite("mtmv_with_sql_cache") {
sql "REFRESH MATERIALIZED VIEW ${mv_name1} AUTO;"
waitingMTMVTaskFinishedByMvName(mv_name1)
- sleep(30 * 1000)
assertNoCache "select * from ${mv_name1}"
assertNoCache mtmv_sql1
assertHasCache "select * from ${nested_mv_name1}"
@@ -809,7 +799,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -855,7 +844,6 @@ suite("mtmv_with_sql_cache") {
// base table insert data
sql "insert into ${tb_name1} values(6, 1)"
- sleep(10000)
assertHasCache "select * from ${mv_name1}"
assertNoCache mtmv_sql1 // mtmv no work ->
directly base table -> no cache
assertHasCache "select * from ${nested_mv_name1}"
@@ -919,7 +907,6 @@ suite("mtmv_with_sql_cache") {
cur_create_async_partition_mv(dbName, mv_name4,
mtmv_sql4, "(id)")
cur_create_async_partition_mv(dbName,
nested_mv_name1, nested_mtmv_sql1, "(id)")
- sleep(10000)
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set enable_sql_cache=true"
@@ -955,7 +942,6 @@ suite("mtmv_with_sql_cache") {
// recreate mtmv to add column
cur_create_async_partition_mv(dbName, mv_name1,
mtmv_sql3, "(id)")
- sleep(15 * 1000)
assertNoCache "select * from ${mv_name1}"
assertHasCache "select * from ${mv_name2}"
assertNoCache mtmv_sql1
@@ -967,7 +953,6 @@ suite("mtmv_with_sql_cache") {
sql "REFRESH MATERIALIZED VIEW ${mv_name2} AUTO;"
waitingMTMVTaskFinishedByMvName(mv_name2)
- sleep(10000)
assertHasCache "select * from ${mv_name2}"
retryUntilHasSqlCache mtmv_sql1
@@ -976,6 +961,7 @@ suite("mtmv_with_sql_cache") {
assertHasCache nested_mtmv_sql1
}
})
+
).get()
}
diff --git a/regression-test/suites/nereids_p0/cache/mv_with_sql_cache.groovy
b/regression-test/suites/nereids_p0/cache/mv_with_sql_cache.groovy
index 7fe3b8eefe6..8c8a3a85c8f 100644
--- a/regression-test/suites/nereids_p0/cache/mv_with_sql_cache.groovy
+++ b/regression-test/suites/nereids_p0/cache/mv_with_sql_cache.groovy
@@ -15,114 +15,248 @@
// specific language governing permissions and limitations
// under the License.
+import com.google.common.util.concurrent.Uninterruptibles
+
+import java.util.concurrent.TimeUnit
+import java.util.stream.Collectors
+
+class CanRetryException extends IllegalStateException {
+ CanRetryException() {
+ }
+
+ CanRetryException(String var1) {
+ super(var1)
+ }
+
+ CanRetryException(String var1, Throwable var2) {
+ super(var1, var2)
+ }
+
+ CanRetryException(Throwable var1) {
+ super(var1)
+ }
+}
+
suite("mv_with_sql_cache") {
+ withGlobalLock("cache_last_version_interval_second") {
+ sql """ADMIN SET ALL FRONTENDS CONFIG
('cache_last_version_interval_second' = '0');"""
+ sql """ADMIN SET ALL FRONTENDS CONFIG ('sql_cache_manage_num' =
'100000')"""
+ sql "set enable_nereids_planner=true"
+ sql "set enable_fallback_to_original_planner=false"
+ sql "set enable_sql_cache=true"
- def assertHasCache = { String sqlStr ->
- explain {
- sql ("physical plan ${sqlStr}")
- contains("PhysicalSqlCache")
+ def assertHasCache = { String sqlStr ->
+ explain {
+ sql ("physical plan ${sqlStr}")
+ contains("PhysicalSqlCache")
+ }
+ }
+
+ def assertNoCache = { String sqlStr ->
+ explain {
+ sql ("physical plan ${sqlStr}")
+ notContains("PhysicalSqlCache")
+ }
}
- }
- def assertNoCache = { String sqlStr ->
- explain {
- sql ("physical plan ${sqlStr}")
- notContains("PhysicalSqlCache")
+ def retryTestSqlCache = { int executeTimes, long intervalMillis,
Closure<Integer> closure ->
+ Throwable throwable = null
+ for (int i = 1; i <= executeTimes; ++i) {
+ try {
+ return closure(i)
+ } catch (CanRetryException t) {
+ logger.warn("Retry failed: $t", t)
+ throwable = t.getCause()
+ Uninterruptibles.sleepUninterruptibly(intervalMillis,
TimeUnit.MILLISECONDS)
+ } catch (Throwable t) {
+ throwable = t
+ break
+ }
+ }
+ if (throwable != null) {
+ throw throwable
+ }
+ return null
+ }
+
+ String dbName = context.config.getDbNameByFile(context.file)
+
+ for (def __ in 0..3) {
+ combineFutures(
+ extraThread("testRenameMv", {
+ retryTestSqlCache(3, 1000) {
+ def prefix_str = "rename_mv_with_sql_cache_"
+ def tb_name1 = prefix_str + "table1"
+ createTestTable tb_name1
+
+ def mv_name1 = prefix_str + "mv1"
+ def new_mv_name1 = prefix_str + "new_mv1"
+ def mv_name2 = prefix_str + "mv2"
+
+ def mv_sql1 = """select id as col1, sum(value) as
col2 from ${tb_name1} group by id;"""
+ def mv_sql2 = """select id as col3 from
${tb_name1} group by id;"""
+ // select mv
+ def mv_str = """select col1 from ${tb_name1} index
${mv_name1} group by col1"""
+ def new_mv_str = """select col1 from ${tb_name1}
index ${new_mv_name1} group by col1"""
+
+ assertNoCache "select * from ${tb_name1}"
+ sql "select * from ${tb_name1}"
+ assertHasCache "select * from ${tb_name1}"
+
+ assertNoCache mv_sql1
+ sql mv_sql1
+ assertHasCache mv_sql1
+
+ assertNoCache mv_sql2
+ sql mv_sql2
+ assertHasCache mv_sql2
+
+ // create mv
+ create_sync_mv(dbName, tb_name1, mv_name1, mv_sql1)
+ create_sync_mv(dbName, tb_name1, mv_name2, mv_sql2)
+
+ assertHasCache "select * from ${tb_name1}"
+ assertHasCache mv_sql1
+ assertHasCache mv_sql2
+
+ assertNoCache mv_str
+ sql mv_str
+ assertHasCache mv_str
+
+ // alter rename
+ sql """ALTER TABLE ${tb_name1} RENAME ROLLUP
${mv_name1} ${new_mv_name1};"""
+
+ assertNoCache "select * from ${tb_name1}"
+ assertNoCache mv_sql1
+ assertNoCache mv_sql2
+ assertNoCache new_mv_str
+
+ sql "select * from ${tb_name1}"
+ sql mv_sql1
+ sql mv_sql2
+ sql new_mv_str
+
+ assertHasCache "select * from ${tb_name1}"
+ assertHasCache mv_sql1
+ assertHasCache mv_sql2
+ assertHasCache new_mv_str
+ }
+ }),
+
+ extraThread("testCreateMvWithInsertData", {
+ retryTestSqlCache(3, 1000) {
+ def prefix_str =
"create_mv_with_insert_data_sql_cache_"
+ def tb_name1 = prefix_str + "table1"
+ createTestTable tb_name1
+
+ def mv_name1 = prefix_str + "mv1"
+ def new_mv_name1 = prefix_str + "new_mv1"
+ def mv_name2 = prefix_str + "mv2"
+
+ def mv_sql1 = """select id as col1, sum(value) as
col2 from ${tb_name1} group by id;"""
+ def mv_sql2 = """select id as col3 from
${tb_name1} group by id;"""
+ // select mv
+ def mv_str = """select col1 from ${tb_name1} index
${mv_name1} group by col1"""
+ def new_mv_str = """select col1 from ${tb_name1}
index ${new_mv_name1} group by col1"""
+
+ assertNoCache "select * from ${tb_name1}"
+ sql "select * from ${tb_name1}"
+ assertHasCache "select * from ${tb_name1}"
+
+ assertNoCache mv_sql1
+ sql mv_sql1
+ assertHasCache mv_sql1
+
+ assertNoCache mv_sql2
+ sql mv_sql2
+ assertHasCache mv_sql2
+
+ // create mv
+ create_sync_mv(dbName, tb_name1, mv_name1, mv_sql1)
+ create_sync_mv(dbName, tb_name1, mv_name2, mv_sql2)
+
+ assertHasCache "select * from ${tb_name1}"
+ assertHasCache mv_sql1
+ assertHasCache mv_sql2
+
+ assertNoCache mv_str
+ sql mv_str
+ assertHasCache mv_str
+
+ // insert data
+ sql """insert into ${tb_name1} values (1, 3);"""
+ assertNoCache "select * from ${tb_name1}"
+ sql "select * from ${tb_name1}"
+ assertHasCache "select * from ${tb_name1}"
+
+ assertNoCache mv_sql1
+ sql mv_sql1
+ assertHasCache mv_sql1
+
+ assertNoCache mv_sql2
+ sql mv_sql2
+ assertHasCache mv_sql2
+
+ assertNoCache mv_str
+ sql mv_str
+ assertHasCache mv_str
+ }
+ }),
+
+ extraThread("testDropMvWithInsertData", {
+ retryTestSqlCache(3, 1000) {
+ def prefix_str = "drop_mv_with_sql_cache_"
+ def tb_name1 = prefix_str + "table1"
+ createTestTable tb_name1
+
+ def mv_name1 = prefix_str + "mv1"
+ def new_mv_name1 = prefix_str + "new_mv1"
+ def mv_name2 = prefix_str + "mv2"
+
+ def mv_sql1 = """select id as col1, sum(value) as
col2 from ${tb_name1} group by id;"""
+ def mv_sql2 = """select id as col3 from
${tb_name1} group by id;"""
+ // select mv
+ def mv_str = """select col1 from ${tb_name1} index
${mv_name1} group by col1"""
+ def new_mv_str = """select col1 from ${tb_name1}
index ${new_mv_name1} group by col1"""
+
+ assertNoCache "select * from ${tb_name1}"
+ sql "select * from ${tb_name1}"
+ assertHasCache "select * from ${tb_name1}"
+
+ assertNoCache mv_sql1
+ sql mv_sql1
+ assertHasCache mv_sql1
+
+ assertNoCache mv_sql2
+ sql mv_sql2
+ assertHasCache mv_sql2
+
+ // create mv
+ create_sync_mv(dbName, tb_name1, mv_name1, mv_sql1)
+ create_sync_mv(dbName, tb_name1, mv_name2, mv_sql2)
+
+ assertHasCache "select * from ${tb_name1}"
+ assertHasCache mv_sql1
+ assertHasCache mv_sql2
+
+ assertNoCache mv_str
+ sql mv_str
+ assertHasCache mv_str
+
+ // drop mv
+ sql """drop materialized view ${mv_name1} on
${tb_name1};"""
+
+ assertHasCache "select * from ${tb_name1}"
+ assertHasCache mv_sql1
+ assertHasCache mv_sql2
+ }
+ })
+
+ ).get()
}
}
- String dbName = context.config.getDbNameByFile(context.file)
- def prefix_str = "mv_with_sql_cache_"
-
- sql "ADMIN SET ALL FRONTENDS CONFIG ('cache_last_version_interval_second'
= '10')"
- sql "set enable_nereids_planner=true"
- sql "set enable_fallback_to_original_planner=false"
- sql "set enable_sql_cache=true"
-
- def tb_name1 = prefix_str + "table1"
- createTestTable tb_name1
- sleep(10 * 1000)
-
- def mv_name1 = prefix_str + "mv1"
- def new_mv_name1 = prefix_str + "new_mv1"
- def mv_name2 = prefix_str + "mv2"
-
- def mv_sql1 = """select id as col1, sum(value) as col2 from ${tb_name1}
group by id;"""
- def mv_sql2 = """select id as col3 from ${tb_name1} group by id;"""
- // select mv
- def mv_str = """select col1 from ${tb_name1} index ${mv_name1} group by
col1"""
- def new_mv_str = """select col1 from ${tb_name1} index ${new_mv_name1}
group by col1"""
-
- assertNoCache "select * from ${tb_name1}"
- sql "select * from ${tb_name1}"
- assertHasCache "select * from ${tb_name1}"
-
- assertNoCache mv_sql1
- sql mv_sql1
- assertHasCache mv_sql1
-
- assertNoCache mv_sql2
- sql mv_sql2
- assertHasCache mv_sql2
-
- // create mv
- create_sync_mv(dbName, tb_name1, mv_name1, mv_sql1)
- create_sync_mv(dbName, tb_name1, mv_name2, mv_sql2)
- sleep(10 * 1000)
-
- assertHasCache "select * from ${tb_name1}"
- assertHasCache mv_sql1
- assertHasCache mv_sql2
-
- assertNoCache mv_str
- sql mv_str
- assertHasCache mv_str
-
- // insert data
- sql """insert into ${tb_name1} values (1, 3);"""
- sleep(10 * 1000)
- assertNoCache "select * from ${tb_name1}"
- sql "select * from ${tb_name1}"
- assertHasCache "select * from ${tb_name1}"
-
- assertNoCache mv_sql1
- sql mv_sql1
- assertHasCache mv_sql1
-
- assertNoCache mv_sql2
- sql mv_sql2
- assertHasCache mv_sql2
-
- assertNoCache mv_str
- sql mv_str
- assertHasCache mv_str
-
- // alter rename
- sql """ALTER TABLE ${tb_name1} RENAME ROLLUP ${mv_name1}
${new_mv_name1};"""
- sleep(10 * 1000)
-
- assertNoCache "select * from ${tb_name1}"
- assertNoCache mv_sql1
- assertNoCache mv_sql2
- assertNoCache new_mv_str
-
- sql "select * from ${tb_name1}"
- sql mv_sql1
- sql mv_sql2
- sql new_mv_str
-
- assertHasCache "select * from ${tb_name1}"
- assertHasCache mv_sql1
- assertHasCache mv_sql2
- assertHasCache new_mv_str
-
- // drop mv
- sql """drop materialized view ${new_mv_name1} on ${tb_name1};"""
- sleep(20 * 1000)
-
- assertHasCache "select * from ${tb_name1}"
- assertHasCache mv_sql1
- assertHasCache mv_sql2
+
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]