This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 6af6997f1d2ff12a66555be5af3a694b23177396 Author: Pxl <[email protected]> AuthorDate: Thu Feb 29 11:01:34 2024 +0800 [Improvement](materialized-view) add approx_count_distinct/ndv to FunctionAlias rule (#31535) add approx_count_distinct/ndv to FunctionAlias rule --- .../src/main/java/org/apache/doris/rewrite/FunctionAlias.java | 7 ++++--- .../test_approx_count_distinct.out} | 4 ++++ .../testNDVToHll/testNDVToHll.out => test_ndv/test_ndv.out} | 4 ++++ regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out | 4 ++++ .../test_approx_count_distinct.groovy} | 10 ++++++++-- .../testNDVToHll.groovy => test_ndv/test_ndv.groovy} | 10 ++++++++-- .../suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy | 6 ++++++ 7 files changed, 38 insertions(+), 7 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/FunctionAlias.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/FunctionAlias.java index b32cc9919b1..29cf2988cfd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/FunctionAlias.java +++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/FunctionAlias.java @@ -27,8 +27,8 @@ import com.google.common.collect.ImmutableMap; import java.util.Map; /** - * Change functio name to function class name on nereids - * alias list: catalog/BuiltinScalarFunctions.java + * Change functio name to function class name on nereids alias list: + * catalog/BuiltinScalarFunctions.java */ public final class FunctionAlias implements ExprRewriteRule { public static ExprRewriteRule INSTANCE = new FunctionAlias(); @@ -41,7 +41,8 @@ public final class FunctionAlias implements ExprRewriteRule { .put("inet_aton", "ipv4_string_to_num_or_null").put("inet6_ntoa", "ipv6_num_to_string") .put("inet6_aton", "ipv6_string_to_num_or_null").put("lcase", "lower").put("add_months", "months_add") .put("current_timestamp", "now").put("localtime", "now").put("localtimestamp", "now").put("ifnull", "nvl") - .put("rand", "random").put("sha", "sha1").put("substr", "substring").put("ucase", "upper").build(); + .put("rand", "random").put("sha", "sha1").put("substr", "substring").put("ucase", "upper") + .put("approx_count_distinct", "ndv").build(); @Override public Expr apply(Expr expr, Analyzer analyzer, ExprRewriter.ClauseType clauseType) throws AnalysisException { diff --git a/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out b/regression-test/data/mv_p0/test_approx_count_distinct/test_approx_count_distinct.out similarity index 88% copy from regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out copy to regression-test/data/mv_p0/test_approx_count_distinct/test_approx_count_distinct.out index 61924a11ab7..7afb3700d9e 100644 --- a/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out +++ b/regression-test/data/mv_p0/test_approx_count_distinct/test_approx_count_distinct.out @@ -8,3 +8,7 @@ 1 2 2 1 +-- !select_mv -- +1 2 +2 1 + diff --git a/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out b/regression-test/data/mv_p0/test_ndv/test_ndv.out similarity index 88% copy from regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out copy to regression-test/data/mv_p0/test_ndv/test_ndv.out index 61924a11ab7..7afb3700d9e 100644 --- a/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out +++ b/regression-test/data/mv_p0/test_ndv/test_ndv.out @@ -8,3 +8,7 @@ 1 2 2 1 +-- !select_mv -- +1 2 +2 1 + diff --git a/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out b/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out index 61924a11ab7..7afb3700d9e 100644 --- a/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out +++ b/regression-test/data/mv_p0/ut/testNDVToHll/testNDVToHll.out @@ -8,3 +8,7 @@ 1 2 2 1 +-- !select_mv -- +1 2 +2 1 + diff --git a/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy b/regression-test/suites/mv_p0/test_approx_count_distinct/test_approx_count_distinct.groovy similarity index 83% copy from regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy copy to regression-test/suites/mv_p0/test_approx_count_distinct/test_approx_count_distinct.groovy index cdd2978f071..900447d3e5c 100644 --- a/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy +++ b/regression-test/suites/mv_p0/test_approx_count_distinct/test_approx_count_distinct.groovy @@ -17,7 +17,7 @@ import org.codehaus.groovy.runtime.IOGroovyMethods -suite ("testNDVToHll") { +suite ("test_approx_count_distinct") { sql """set enable_nereids_planner=true;""" sql """set enable_fallback_to_original_planner=false;""" sql """ DROP TABLE IF EXISTS user_tags; """ @@ -33,7 +33,7 @@ suite ("testNDVToHll") { sql """insert into user_tags values("2020-01-01",1,"a",1);""" sql """insert into user_tags values("2020-01-02",2,"b",2);""" - createMV("create materialized view user_tags_mv as select user_id, hll_union(hll_hash(tag_id)) from user_tags group by user_id;") + createMV("create materialized view user_tags_mv as select user_id, approx_count_distinct(tag_id) from user_tags group by user_id;") sql """insert into user_tags values("2020-01-01",1,"a",2);""" @@ -48,4 +48,10 @@ suite ("testNDVToHll") { contains "(user_tags_mv)" } qt_select_mv "select user_id, ndv(tag_id) a from user_tags group by user_id order by user_id;" + + explain { + sql("select user_id, approx_count_distinct(tag_id) a from user_tags group by user_id order by user_id;") + contains "(user_tags_mv)" + } + qt_select_mv "select user_id, approx_count_distinct(tag_id) a from user_tags group by user_id order by user_id;" } diff --git a/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy b/regression-test/suites/mv_p0/test_ndv/test_ndv.groovy similarity index 85% copy from regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy copy to regression-test/suites/mv_p0/test_ndv/test_ndv.groovy index cdd2978f071..b4be75f53ed 100644 --- a/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy +++ b/regression-test/suites/mv_p0/test_ndv/test_ndv.groovy @@ -17,7 +17,7 @@ import org.codehaus.groovy.runtime.IOGroovyMethods -suite ("testNDVToHll") { +suite ("test_ndv") { sql """set enable_nereids_planner=true;""" sql """set enable_fallback_to_original_planner=false;""" sql """ DROP TABLE IF EXISTS user_tags; """ @@ -33,7 +33,7 @@ suite ("testNDVToHll") { sql """insert into user_tags values("2020-01-01",1,"a",1);""" sql """insert into user_tags values("2020-01-02",2,"b",2);""" - createMV("create materialized view user_tags_mv as select user_id, hll_union(hll_hash(tag_id)) from user_tags group by user_id;") + createMV("create materialized view user_tags_mv as select user_id, ndv(tag_id) from user_tags group by user_id;") sql """insert into user_tags values("2020-01-01",1,"a",2);""" @@ -48,4 +48,10 @@ suite ("testNDVToHll") { contains "(user_tags_mv)" } qt_select_mv "select user_id, ndv(tag_id) a from user_tags group by user_id order by user_id;" + + explain { + sql("select user_id, approx_count_distinct(tag_id) a from user_tags group by user_id order by user_id;") + contains "(user_tags_mv)" + } + qt_select_mv "select user_id, approx_count_distinct(tag_id) a from user_tags group by user_id order by user_id;" } diff --git a/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy b/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy index cdd2978f071..ec83e476ec8 100644 --- a/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy +++ b/regression-test/suites/mv_p0/ut/testNDVToHll/testNDVToHll.groovy @@ -48,4 +48,10 @@ suite ("testNDVToHll") { contains "(user_tags_mv)" } qt_select_mv "select user_id, ndv(tag_id) a from user_tags group by user_id order by user_id;" + + explain { + sql("select user_id, approx_count_distinct(tag_id) a from user_tags group by user_id order by user_id;") + contains "(user_tags_mv)" + } + qt_select_mv "select user_id, approx_count_distinct(tag_id) a from user_tags group by user_id order by user_id;" } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
