This is an automated email from the ASF dual-hosted git repository. panxiaolei 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 9f4170cfa5e [Bug](materialized-view) fix result is nulable have wrong value on multi_distinct_sum (#36766) 9f4170cfa5e is described below commit 9f4170cfa5e95cd4181a88d10950145baaae43fe Author: Pxl <pxl...@qq.com> AuthorDate: Wed Jun 26 10:25:48 2024 +0800 [Bug](materialized-view) fix result is nulable have wrong value on multi_distinct_sum (#36766) ## Proposed changes fix result is nulable have wrong value on multi_distinct_sum --- .../main/java/org/apache/doris/catalog/AggStateType.java | 8 ++++++-- .../java/org/apache/doris/catalog/AggregateFunction.java | 15 +++++++-------- .../agg_state/nereids/test_agg_state_nereids.out | 2 +- .../data/datatype_p0/agg_state/test_agg_state.out | 2 +- .../agg_state/diffrent_serialize/diffrent_serialize.out | 14 ++++++++++++++ .../datatype_p0/agg_state/max/test_agg_state_max.groovy | 2 +- .../diffrent_serialize/diffrent_serialize.groovy | 15 +++++++++++++++ 7 files changed, 45 insertions(+), 13 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java index 296677da836..49538b66973 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/AggStateType.java @@ -77,7 +77,7 @@ public class AggStateType extends Type { @Override public String toSql(int depth) { StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("AGG_STATE<").append(functionName).append("("); + stringBuilder.append("AGG_STATE<arguments=").append(functionName).append("("); for (int i = 0; i < subTypes.size(); i++) { if (i > 0) { stringBuilder.append(", "); @@ -87,7 +87,11 @@ public class AggStateType extends Type { stringBuilder.append(" NULL"); } } - stringBuilder.append(")>"); + stringBuilder.append("), function_name="); + stringBuilder.append(functionName); + stringBuilder.append(", result_is_nullable="); + stringBuilder.append(resultIsNullable); + stringBuilder.append(">"); return stringBuilder.toString(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java index 69cb96883e6..8dccb34a248 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java @@ -47,16 +47,15 @@ public class AggregateFunction extends Function { private static final Logger LOG = LogManager.getLogger(AggregateFunction.class); public static ImmutableSet<String> NOT_NULLABLE_AGGREGATE_FUNCTION_NAME_SET = ImmutableSet.of("row_number", "rank", - "dense_rank", "multi_distinct_count", "multi_distinct_sum", FunctionSet.HLL_UNION_AGG, - FunctionSet.HLL_UNION, FunctionSet.HLL_RAW_AGG, FunctionSet.BITMAP_UNION, FunctionSet.BITMAP_INTERSECT, + "dense_rank", "multi_distinct_count", FunctionSet.HLL_UNION_AGG, FunctionSet.HLL_UNION, + FunctionSet.HLL_RAW_AGG, FunctionSet.BITMAP_UNION, FunctionSet.BITMAP_INTERSECT, FunctionSet.ORTHOGONAL_BITMAP_INTERSECT, FunctionSet.ORTHOGONAL_BITMAP_INTERSECT_COUNT, FunctionSet.ORTHOGONAL_BITMAP_EXPR_CALCULATE_COUNT, FunctionSet.ORTHOGONAL_BITMAP_EXPR_CALCULATE, - FunctionSet.INTERSECT_COUNT, FunctionSet.ORTHOGONAL_BITMAP_UNION_COUNT, - FunctionSet.COUNT, "approx_count_distinct", "ndv", FunctionSet.BITMAP_UNION_INT, - FunctionSet.BITMAP_UNION_COUNT, "ndv_no_finalize", FunctionSet.WINDOW_FUNNEL, FunctionSet.RETENTION, - FunctionSet.SEQUENCE_MATCH, FunctionSet.SEQUENCE_COUNT, FunctionSet.MAP_AGG, FunctionSet.BITMAP_AGG, - FunctionSet.ARRAY_AGG, FunctionSet.COLLECT_LIST, FunctionSet.COLLECT_SET, - FunctionSet.GROUP_ARRAY_INTERSECT); + FunctionSet.INTERSECT_COUNT, FunctionSet.ORTHOGONAL_BITMAP_UNION_COUNT, FunctionSet.COUNT, + "approx_count_distinct", "ndv", FunctionSet.BITMAP_UNION_INT, FunctionSet.BITMAP_UNION_COUNT, + "ndv_no_finalize", FunctionSet.WINDOW_FUNNEL, FunctionSet.RETENTION, FunctionSet.SEQUENCE_MATCH, + FunctionSet.SEQUENCE_COUNT, FunctionSet.MAP_AGG, FunctionSet.BITMAP_AGG, FunctionSet.ARRAY_AGG, + FunctionSet.COLLECT_LIST, FunctionSet.COLLECT_SET, FunctionSet.GROUP_ARRAY_INTERSECT); public static ImmutableSet<String> ALWAYS_NULLABLE_AGGREGATE_FUNCTION_NAME_SET = ImmutableSet.of("stddev_samp", "variance_samp", "var_samp", "percentile_approx", "first_value", diff --git a/regression-test/data/datatype_p0/agg_state/nereids/test_agg_state_nereids.out b/regression-test/data/datatype_p0/agg_state/nereids/test_agg_state_nereids.out index 8cdb1b8a59d..3acebc4b1a9 100644 --- a/regression-test/data/datatype_p0/agg_state/nereids/test_agg_state_nereids.out +++ b/regression-test/data/datatype_p0/agg_state/nereids/test_agg_state_nereids.out @@ -16,7 +16,7 @@ -- !desc -- k1 INT Yes true \N -k2 AGG_STATE<max_by(INT, INT NULL)> No false \N GENERIC +k2 AGG_STATE<arguments=max_by(INT, INT NULL), function_name=max_by, result_is_nullable=true> No false \N GENERIC -- !length1 -- 1 11 diff --git a/regression-test/data/datatype_p0/agg_state/test_agg_state.out b/regression-test/data/datatype_p0/agg_state/test_agg_state.out index 0e1e5b6ed91..62deb001ab7 100644 --- a/regression-test/data/datatype_p0/agg_state/test_agg_state.out +++ b/regression-test/data/datatype_p0/agg_state/test_agg_state.out @@ -16,7 +16,7 @@ -- !desc -- k1 INT Yes true \N -k2 AGG_STATE<max_by(INT, INT NULL)> No false \N GENERIC +k2 AGG_STATE<arguments=max_by(INT, INT NULL), function_name=max_by, result_is_nullable=true> No false \N GENERIC -- !length1 -- 1 11 diff --git a/regression-test/data/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.out b/regression-test/data/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.out index 87d4d391e55..5f569bbbae4 100644 --- a/regression-test/data/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.out +++ b/regression-test/data/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.out @@ -27,3 +27,17 @@ 2 1 3 1 +-- !select_mv -- +\N \N +-4 -4 +1 1 +2 2 +3 \N + +-- !select_mv -- +\N d +-4 d +1 a +2 b +3 c + diff --git a/regression-test/suites/datatype_p0/agg_state/max/test_agg_state_max.groovy b/regression-test/suites/datatype_p0/agg_state/max/test_agg_state_max.groovy index 4b8f07284ee..7f48df72a7e 100644 --- a/regression-test/suites/datatype_p0/agg_state/max/test_agg_state_max.groovy +++ b/regression-test/suites/datatype_p0/agg_state/max/test_agg_state_max.groovy @@ -30,7 +30,7 @@ suite("test_agg_state_max") { test { sql "insert into a_table values(100,max_state(null));" - exception "can not cast from origin type AGG_STATE<max(NULL_TYPE NULL)> to target type=AGG_STATE<max(INT)>" + exception "can not cast from origin type AGG_STATE" } sql """insert into a_table diff --git a/regression-test/suites/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.groovy b/regression-test/suites/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.groovy index 9117615e28e..36bec9d30e2 100644 --- a/regression-test/suites/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.groovy +++ b/regression-test/suites/mv_p0/agg_state/diffrent_serialize/diffrent_serialize.groovy @@ -39,6 +39,8 @@ suite ("diffrent_serialize") { createMV("create materialized view mv1_1 as select k1,bitmap_intersect(to_bitmap(k2)) from d_table group by k1;") createMV("create materialized view mv1 as select k1,bitmap_agg(k2) from d_table group by k1;") + createMV("create materialized view mv1_2 as select k1, multi_distinct_group_concat(k4) from d_table group by k1 order by k1;") + createMV("create materialized view mv1_3 as select k1, multi_distinct_sum(k3) from d_table group by k1 order by k1;") /* createMV("create materialized view mv2 as select k1,map_agg(k2,k3) from d_table group by k1;") createMV("create materialized view mv3 as select k1,array_agg(k2) from d_table group by k1;") @@ -72,6 +74,19 @@ suite ("diffrent_serialize") { } qt_select_mv "select k1,bitmap_count(bitmap_agg(k2)) from d_table group by k1 order by 1;" + explain { + sql("select k1, multi_distinct_sum(k3) from d_table group by k1 order by k1;") + contains "(mv1_3)" + } + qt_select_mv "select k1, multi_distinct_sum(k3) from d_table group by k1 order by k1;" + + explain { + sql("select k1, multi_distinct_group_concat(k4) from d_table group by k1 order by k1;") + contains "(mv1_2)" + } + qt_select_mv "select k1, multi_distinct_group_concat(k4) from d_table group by k1 order by k1;" + + /* explain { sql("select k1,map_agg(k2,k3) from d_table group by k1 order by 1;") --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org