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]

Reply via email to