You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2026/01/15 07:56:49 UTC
(doris) branch master updated: [test](mtmv) Inject stats to external table to make external table case stable (#59721)
This is an automated email from the ASF dual-hosted git repository.
morrysnow 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 21a3be552b2 [test](mtmv) Inject stats to external table to make external table case stable (#59721)
21a3be552b2 is described below
commit 21a3be552b2f708d84d4dbb95a93f3058631f5dd
Author: seawinde <wu...@selectdb.com>
AuthorDate: Thu Jan 15 15:56:41 2026 +0800
[test](mtmv) Inject stats to external table to make external table case stable (#59721)
Related PR: #49956
---
.../hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.out | 42 ++---------
.../hudi_mtmv/test_hudi_olap_rewrite_mtmv.groovy | 83 ++++++++++++++++++++--
2 files changed, 85 insertions(+), 40 deletions(-)
diff --git a/regression-test/data/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.out b/regression-test/data/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.out
index 30b64a98ad8..77597631587 100644
--- a/regression-test/data/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.out
+++ b/regression-test/data/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.out
@@ -1,44 +1,16 @@
-- This file is automatically generated. You should know what you did if you want to edit this
-- !refresh_one_partition --
-20250121171615893 20250121171615893_0_0 20250121171615893_3_1 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 5 5 a \N \N
-20250121171615893 20250121171615893_0_1 20250121171615893_5_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 7 7 a \N \N
-20250121171615893 20250121171615893_0_2 20250121171615893_7_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 9 9 a \N \N
-20250121171615893 20250121171615893_0_3 20250121171615893_0_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 1 1 a 1 2
-20250121171615893 20250121171615893_0_4 20250121171615893_2_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 3 3 a \N \N
+a 5
-- !refresh_one_partition_rewrite --
-20250121171615893 20250121171615893_0_0 20250121171615893_3_1 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 5 5 a \N \N
-20250121171615893 20250121171615893_0_1 20250121171615893_5_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 7 7 a \N \N
-20250121171615893 20250121171615893_0_2 20250121171615893_7_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 9 9 a \N \N
-20250121171615893 20250121171615893_0_3 20250121171615893_0_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 1 1 a 1 2
-20250121171615893 20250121171615893_0_4 20250121171615893_2_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 3 3 a \N \N
-20250121171615893 20250121171615893_1_0 20250121171615893_4_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 6 6 b \N \N
-20250121171615893 20250121171615893_1_1 20250121171615893_6_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 8 8 b \N \N
-20250121171615893 20250121171615893_1_2 20250121171615893_1_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 2 2 b \N \N
-20250121171615893 20250121171615893_1_3 20250121171615893_3_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 4 4 b \N \N
-20250121171615893 20250121171615893_1_4 20250121171615893_7_1 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 10 10 b \N \N
+a 5
+b 5
-- !refresh_auto --
-20250121171615893 20250121171615893_0_0 20250121171615893_3_1 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 5 5 a \N \N
-20250121171615893 20250121171615893_0_1 20250121171615893_5_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 7 7 a \N \N
-20250121171615893 20250121171615893_0_2 20250121171615893_7_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 9 9 a \N \N
-20250121171615893 20250121171615893_0_3 20250121171615893_0_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 1 1 a 1 2
-20250121171615893 20250121171615893_0_4 20250121171615893_2_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 3 3 a \N \N
-20250121171615893 20250121171615893_1_0 20250121171615893_4_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 6 6 b \N \N
-20250121171615893 20250121171615893_1_1 20250121171615893_6_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 8 8 b \N \N
-20250121171615893 20250121171615893_1_2 20250121171615893_1_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 2 2 b \N \N
-20250121171615893 20250121171615893_1_3 20250121171615893_3_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 4 4 b \N \N
-20250121171615893 20250121171615893_1_4 20250121171615893_7_1 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 10 10 b \N \N
+a 5
+b 5
-- !refresh_all_partition_rewrite --
-20250121171615893 20250121171615893_0_0 20250121171615893_3_1 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 5 5 a \N \N
-20250121171615893 20250121171615893_0_1 20250121171615893_5_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 7 7 a \N \N
-20250121171615893 20250121171615893_0_2 20250121171615893_7_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 9 9 a \N \N
-20250121171615893 20250121171615893_0_3 20250121171615893_0_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 1 1 a 1 2
-20250121171615893 20250121171615893_0_4 20250121171615893_2_0 par=a 58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet 3 3 a \N \N
-20250121171615893 20250121171615893_1_0 20250121171615893_4_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 6 6 b \N \N
-20250121171615893 20250121171615893_1_1 20250121171615893_6_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 8 8 b \N \N
-20250121171615893 20250121171615893_1_2 20250121171615893_1_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 2 2 b \N \N
-20250121171615893 20250121171615893_1_3 20250121171615893_3_0 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 4 4 b \N \N
-20250121171615893 20250121171615893_1_4 20250121171615893_7_1 par=b 7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet 10 10 b \N \N
+a 5
+b 5
diff --git a/regression-test/suites/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.groovy b/regression-test/suites/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.groovy
index 56bbc5dc463..a2a3d20924d 100644
--- a/regression-test/suites/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.groovy
+++ b/regression-test/suites/external_table_p2/hudi/hudi_mtmv/test_hudi_olap_rewrite_mtmv.groovy
@@ -46,7 +46,7 @@ suite("test_hudi_olap_rewrite_mtmv", "p2,external,hudi,external_remote,external_
String props = context.config.otherConfigs.get("hudiEmrCatalog")
sql """set materialized_view_rewrite_enable_contain_external_table=true;"""
- String mvSql = "SELECT * FROM ${catalogName}.`hudi_mtmv_regression_test`.hudi_table_1 a left join ${tableName} b on a.id=b.user_id;";
+ String mvSql = "SELECT par, count(*) FROM ${catalogName}.`hudi_mtmv_regression_test`.hudi_table_1 a left join ${tableName} b on a.id=b.user_id group by par;";
sql """drop catalog if exists ${catalogName}"""
sql """CREATE CATALOG if not exists ${catalogName} PROPERTIES (
@@ -55,6 +55,82 @@ suite("test_hudi_olap_rewrite_mtmv", "p2,external,hudi,external_remote,external_
sql """analyze table ${catalogName}.`hudi_mtmv_regression_test`.hudi_table_1 with sync"""
sql """alter table ${catalogName}.`hudi_mtmv_regression_test`.hudi_table_1 modify column par set stats ('row_count'='10');"""
+ sql """
+alter table ${catalogName}.hudi_mtmv_regression_test.hudi_table_1
+modify column age set stats (
+ "ndv"="10",
+ "num_nulls"="0",
+ "min_value"="1",
+ "max_value"="10",
+ "row_count"="10"
+);
+"""
+
+ sql """
+alter table ${catalogName}.hudi_mtmv_regression_test.hudi_table_1
+modify column _hoodie_record_key set stats (
+ "ndv"="10",
+ "num_nulls"="0",
+ "min_value"="20250121171615893_0_0",
+ "max_value"="20250121171615893_7_1",
+ "row_count"="10"
+);
+"""
+
+ sql """
+alter table ${catalogName}.hudi_mtmv_regression_test.hudi_table_1
+modify column id set stats (
+ "ndv"="10",
+ "num_nulls"="0",
+ "min_value"="1",
+ "max_value"="10",
+ "row_count"="10"
+);
+"""
+
+ sql """
+alter table ${catalogName}.hudi_mtmv_regression_test.hudi_table_1
+modify column _hoodie_file_name set stats (
+ "ndv"="2",
+ "num_nulls"="0",
+ "min_value"="58eabd3f-1996-4cb6-83e4-56fd11cb4e7d-0_0-30-108_20250121171615893.parquet",
+ "max_value"="7f98e9ac-bd11-48fd-ac80-9ca6dc1ddb34-0_1-30-109_20250121171615893.parquet",
+ "row_count"="10"
+);
+"""
+
+ sql """
+alter table ${catalogName}.hudi_mtmv_regression_test.hudi_table_1
+modify column _hoodie_partition_path set stats (
+ "ndv"="2",
+ "num_nulls"="0",
+ "min_value"="par=a",
+ "max_value"="par=b",
+ "row_count"="10"
+);
+"""
+
+ sql """
+alter table ${catalogName}.hudi_mtmv_regression_test.hudi_table_1
+modify column _hoodie_commit_seqno set stats (
+ "ndv"="10",
+ "num_nulls"="0",
+ "min_value"="20250121171615893_0_0",
+ "max_value"="20250121171615893_1_4",
+ "row_count"="10"
+);
+"""
+
+ sql """
+alter table ${catalogName}.hudi_mtmv_regression_test.hudi_table_1
+modify column _hoodie_commit_time set stats (
+ "ndv"="1",
+ "num_nulls"="0",
+ "min_value"="20250121171615893",
+ "max_value"="20250121171615893",
+ "row_count"="10"
+);
+"""
sql """drop materialized view if exists ${mvName};"""
@@ -79,15 +155,12 @@ suite("test_hudi_olap_rewrite_mtmv", "p2,external,hudi,external_remote,external_
waitingMTMVTaskFinishedByMvName(mvName)
order_qt_refresh_one_partition "SELECT * FROM ${mvName} "
- def explainOnePartition = sql """ explain ${mvSql} """
- logger.info("explainOnePartition: " + explainOnePartition.toString())
- assertTrue(explainOnePartition.toString().contains("VUNION"))
order_qt_refresh_one_partition_rewrite "${mvSql}"
mv_rewrite_success("${mvSql}", "${mvName}")
// select p_b should not rewrite
- mv_not_part_in("SELECT * FROM ${catalogName}.`hudi_mtmv_regression_test`.hudi_table_1 a left join ${tableName} b on a.id=b.user_id where a.par='b';", "${mvName}")
+ mv_not_part_in("SELECT par, count(*) FROM ${catalogName}.`hudi_mtmv_regression_test`.hudi_table_1 a left join ${tableName} b on a.id=b.user_id where a.par='b' group by par;", "${mvName}")
//refresh auto
sql """
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org