From 6c5bbc6e4c248b4a01c51aa574547fc3d1bf6956 Mon Sep 17 00:00:00 2001 From: zhangstar333 <87313068+zhangstar333@users.noreply.github.com> Date: Sat, 2 Apr 2022 10:44:55 +0800 Subject: [PATCH] fix agg functions check failed from empty table (#8785) fix agg functions check failed from empty table --- be/src/exprs/aggregate_functions.cpp | 11 ----------- be/src/exprs/aggregate_functions.h | 6 ++---- .../org/apache/doris/catalog/AggregateFunction.java | 2 +- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/be/src/exprs/aggregate_functions.cpp b/be/src/exprs/aggregate_functions.cpp index 9f059b70e6..42661e8f3d 100644 --- a/be/src/exprs/aggregate_functions.cpp +++ b/be/src/exprs/aggregate_functions.cpp @@ -234,7 +234,6 @@ StringVal AggregateFunctions::percentile_serialize(FunctionContext* ctx, const S } DoubleVal AggregateFunctions::percentile_finalize(FunctionContext* ctx, const StringVal& src) { - DCHECK(!src.is_null); PercentileState* percentile = reinterpret_cast(src.ptr); double quantile = percentile->quantile; @@ -340,7 +339,6 @@ void AggregateFunctions::percentile_approx_merge(FunctionContext* ctx, const Str DoubleVal AggregateFunctions::percentile_approx_finalize(FunctionContext* ctx, const StringVal& src) { - DCHECK(!src.is_null); PercentileApproxState* percentile = reinterpret_cast(src.ptr); double quantile = percentile->targetQuantile; @@ -1764,7 +1762,6 @@ StringVal AggregateFunctions::count_distinct_date_serialize(FunctionContext* ctx template BigIntVal AggregateFunctions::count_or_sum_distinct_numeric_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctNumericState* state = reinterpret_cast*>(state_sv.ptr); BigIntVal result = state->count_finalize(); @@ -1774,7 +1771,6 @@ BigIntVal AggregateFunctions::count_or_sum_distinct_numeric_finalize(FunctionCon BigIntVal AggregateFunctions::count_distinct_string_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctStringCountState* state = reinterpret_cast(state_sv.ptr); BigIntVal result = state->finalize(); @@ -1785,7 +1781,6 @@ BigIntVal AggregateFunctions::count_distinct_string_finalize(FunctionContext* ct template DoubleVal AggregateFunctions::sum_distinct_double_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctNumericState* state = reinterpret_cast*>(state_sv.ptr); DoubleVal result = state->sum_finalize_double(); @@ -1796,7 +1791,6 @@ DoubleVal AggregateFunctions::sum_distinct_double_finalize(FunctionContext* ctx, template LargeIntVal AggregateFunctions::sum_distinct_largeint_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctNumericState* state = reinterpret_cast*>(state_sv.ptr); LargeIntVal result = state->sum_finalize_largeint(); @@ -1807,7 +1801,6 @@ LargeIntVal AggregateFunctions::sum_distinct_largeint_finalize(FunctionContext* template BigIntVal AggregateFunctions::sum_distinct_bigint_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctNumericState* state = reinterpret_cast*>(state_sv.ptr); BigIntVal result = state->sum_finalize_bigint(); @@ -1817,7 +1810,6 @@ BigIntVal AggregateFunctions::sum_distinct_bigint_finalize(FunctionContext* ctx, BigIntVal AggregateFunctions::count_distinct_decimalv2_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctDecimalV2State* state = reinterpret_cast(state_sv.ptr); BigIntVal result = state->count_finalize(); @@ -1827,7 +1819,6 @@ BigIntVal AggregateFunctions::count_distinct_decimalv2_finalize(FunctionContext* DecimalV2Val AggregateFunctions::sum_distinct_decimalv2_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctDecimalV2State* state = reinterpret_cast(state_sv.ptr); DecimalV2Val result = state->sum_finalize(); @@ -1837,7 +1828,6 @@ DecimalV2Val AggregateFunctions::sum_distinct_decimalv2_finalize(FunctionContext BigIntVal AggregateFunctions::count_distinct_date_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); MultiDistinctCountDateState* state = reinterpret_cast(state_sv.ptr); BigIntVal result = state->count_finalize(); @@ -1993,7 +1983,6 @@ void AggregateFunctions::decimalv2_knuth_var_merge(FunctionContext* ctx, const S } DoubleVal AggregateFunctions::knuth_var_finalize(FunctionContext* ctx, const StringVal& state_sv) { - DCHECK(!state_sv.is_null); KnuthVarianceState* state = reinterpret_cast(state_sv.ptr); if (state->count == 0 || state->count == 1) return DoubleVal::null(); double variance = compute_knuth_variance(*state, false); diff --git a/be/src/exprs/aggregate_functions.h b/be/src/exprs/aggregate_functions.h index 2f1e67bcf3..b3b19ab9ce 100644 --- a/be/src/exprs/aggregate_functions.h +++ b/be/src/exprs/aggregate_functions.h @@ -231,12 +231,10 @@ public: StringVal* dst); static void count_or_sum_distinct_decimalv2_merge(FunctionContext* ctx, StringVal& src, StringVal* dst); - static StringVal count_or_sum_distinct_decimal_serialize(FunctionContext* ctx, - const StringVal& state_sv); + static StringVal count_or_sum_distinct_decimalv2_serialize(FunctionContext* ctx, const StringVal& state_sv); - static BigIntVal count_distinct_decimal_finalize(FunctionContext* ctx, - const StringVal& state_sv); + static BigIntVal count_distinct_decimalv2_finalize(FunctionContext* ctx, const StringVal& state_sv); static DecimalV2Val sum_distinct_decimalv2_finalize(FunctionContext* ctx, 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 fba361704e..a695a9c4b4 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 @@ -49,7 +49,7 @@ public class AggregateFunction extends Function { private static final Logger LOG = LogManager.getLogger(AggregateFunction.class); public static ImmutableSet NOT_NULLABLE_AGGREGATE_FUNCTION_NAME_SET = - ImmutableSet.of("row_number", "rank", "dense_rank", "hll_union_agg", "hll_union", "bitmap_union", "bitmap_intersect", FunctionSet.COUNT, "ndv", FunctionSet.BITMAP_UNION_INT, FunctionSet.BITMAP_UNION_COUNT, "ndv_no_finalize"); + ImmutableSet.of("row_number", "rank", "dense_rank", "multi_distinct_count", "multi_distinct_sum", "hll_union_agg", "hll_union", "bitmap_union", "bitmap_intersect", FunctionSet.COUNT, "approx_count_distinct", "ndv", FunctionSet.BITMAP_UNION_INT, FunctionSet.BITMAP_UNION_COUNT, "ndv_no_finalize"); public static ImmutableSet ALWAYS_NULLABLE_AGGREGATE_FUNCTION_NAME_SET = ImmutableSet.of("stddev_samp", "variance_samp", "var_samp", "percentile_approx");