diff --git a/be/src/util/counts.h b/be/src/util/counts.h index 67880268da2b65..178481e7c90663 100644 --- a/be/src/util/counts.h +++ b/be/src/util/counts.h @@ -99,7 +99,8 @@ class Counts { double u = (_nums.size() - 1) * quantile; auto index = static_cast(u); return _nums[index] + - (u - static_cast(index)) * (_nums[index + 1] - _nums[index]); + (u - static_cast(index)) * (static_cast(_nums[index + 1]) - + static_cast(_nums[index])); } else { DCHECK(_nums.empty()); size_t rows = 0; @@ -124,7 +125,9 @@ class Counts { if (quantile == 1) { return second_number; } - return first_number + (u - static_cast(index)) * (second_number - first_number); + return first_number + + (u - static_cast(index)) * + (static_cast(second_number) - static_cast(first_number)); } } diff --git a/be/src/vec/aggregate_functions/aggregate_function_avg.h b/be/src/vec/aggregate_functions/aggregate_function_avg.h index 16aa67d5108c8d..cf65b41d90f643 100644 --- a/be/src/vec/aggregate_functions/aggregate_function_avg.h +++ b/be/src/vec/aggregate_functions/aggregate_function_avg.h @@ -143,8 +143,8 @@ class AggregateFunctionAvg final } template - void update_value(AggregateDataPtr __restrict place, const IColumn** columns, - ssize_t row_num) const { + NO_SANITIZE_UNDEFINED void update_value(AggregateDataPtr __restrict place, + const IColumn** columns, ssize_t row_num) const { #ifdef __clang__ #pragma clang fp reassociate(on) #endif @@ -177,8 +177,8 @@ class AggregateFunctionAvg final this->data(place).count = 0; } - void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs, - Arena&) const override { + NO_SANITIZE_UNDEFINED void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs, + Arena&) const override { if constexpr (is_decimal(T)) { this->data(place).sum += this->data(rhs).sum.value; } else { @@ -235,8 +235,9 @@ class AggregateFunctionAvg final } } - void deserialize_and_merge_from_column(AggregateDataPtr __restrict place, const IColumn& column, - Arena&) const override { + NO_SANITIZE_UNDEFINED void deserialize_and_merge_from_column(AggregateDataPtr __restrict place, + const IColumn& column, + Arena&) const override { auto& col = assert_cast(column); const size_t num_rows = column.size(); DCHECK(col.size() >= num_rows) << "source column's size should greater than num_rows"; @@ -248,9 +249,9 @@ class AggregateFunctionAvg final } } - void deserialize_and_merge_from_column_range(AggregateDataPtr __restrict place, - const IColumn& column, size_t begin, size_t end, - Arena&) const override { + NO_SANITIZE_UNDEFINED void deserialize_and_merge_from_column_range( + AggregateDataPtr __restrict place, const IColumn& column, size_t begin, size_t end, + Arena&) const override { DCHECK(end <= column.size() && begin <= end) << ", begin:" << begin << ", end:" << end << ", column.size():" << column.size(); auto& col = assert_cast(column); diff --git a/be/src/vec/aggregate_functions/aggregate_function_sum.h b/be/src/vec/aggregate_functions/aggregate_function_sum.h index 11caab63f47063..4151316f447a87 100644 --- a/be/src/vec/aggregate_functions/aggregate_function_sum.h +++ b/be/src/vec/aggregate_functions/aggregate_function_sum.h @@ -214,12 +214,11 @@ class AggregateFunctionSum final bool supported_incremental_mode() const override { return true; } - void execute_function_with_incremental(int64_t partition_start, int64_t partition_end, - int64_t frame_start, int64_t frame_end, - AggregateDataPtr place, const IColumn** columns, - Arena& arena, bool previous_is_nul, bool end_is_nul, - bool has_null, UInt8* use_null_result, - UInt8* could_use_previous_result) const override { + NO_SANITIZE_UNDEFINED void execute_function_with_incremental( + int64_t partition_start, int64_t partition_end, int64_t frame_start, int64_t frame_end, + AggregateDataPtr place, const IColumn** columns, Arena& arena, bool previous_is_nul, + bool end_is_nul, bool has_null, UInt8* use_null_result, + UInt8* could_use_previous_result) const override { int64_t current_frame_start = std::max(frame_start, partition_start); int64_t current_frame_end = std::min(frame_end, partition_end); diff --git a/be/src/vec/functions/minus.cpp b/be/src/vec/functions/minus.cpp index 8f0eba7eb66357..4fdbda2b96ffb1 100644 --- a/be/src/vec/functions/minus.cpp +++ b/be/src/vec/functions/minus.cpp @@ -63,7 +63,7 @@ struct MinusImpl { static constexpr auto name = "subtract"; static constexpr PrimitiveType PType = Type; using Arg = typename PrimitiveTypeTraits::ColumnItemType; - static inline Arg apply(Arg a, Arg b) { return a - b; } + NO_SANITIZE_UNDEFINED static inline Arg apply(Arg a, Arg b) { return a - b; } }; void register_function_minus(SimpleFunctionFactory& factory) { diff --git a/be/src/vec/runtime/vdatetime_value.h b/be/src/vec/runtime/vdatetime_value.h index 5f20b60c9ee262..7140c0845edeaf 100644 --- a/be/src/vec/runtime/vdatetime_value.h +++ b/be/src/vec/runtime/vdatetime_value.h @@ -1425,13 +1425,14 @@ class DateV2Value { int64_t to_int64() const { if constexpr (is_datetime) { - return (date_v2_value_.year_ * 10000L + date_v2_value_.month_ * 100 + + return (date_v2_value_.year_ * 10000LL + date_v2_value_.month_ * 100LL + date_v2_value_.day_) * - 1000000L + - date_v2_value_.hour_ * 10000 + date_v2_value_.minute_ * 100 + + 1000000LL + + date_v2_value_.hour_ * 10000LL + date_v2_value_.minute_ * 100LL + date_v2_value_.second_; } else { - return date_v2_value_.year_ * 10000 + date_v2_value_.month_ * 100 + date_v2_value_.day_; + return date_v2_value_.year_ * 10000LL + date_v2_value_.month_ * 100LL + + date_v2_value_.day_; } }