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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]