This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch 2.1-tmp
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 8fd6d4c41b8bb1ea7b9b4acb7aa52eb986ddc925
Author: Pxl <pxl...@qq.com>
AuthorDate: Wed Apr 3 11:57:41 2024 +0800

    [Chore](build) add -Wconversion and remove some unused code (#33127)
    
    add -Wconversion and remove some unused code
---
 be/CMakeLists.txt                                  | 11 ++++++---
 be/src/exprs/bloom_filter_func.h                   |  4 ++--
 be/src/glibc-compatibility/CMakeLists.txt          |  1 +
 be/src/http/http_client.h                          |  2 +-
 be/src/olap/cumulative_compaction_policy.cpp       |  2 +-
 be/src/olap/memtable.cpp                           |  4 ++--
 be/src/olap/olap_server.cpp                        |  2 +-
 be/src/olap/rowset/segment_v2/bloom_filter.cpp     |  2 +-
 .../rowset/segment_v2/inverted_index_cache.cpp     |  4 ++--
 be/src/olap/wal/wal_table.cpp                      | 15 ++++++------
 be/src/pipeline/exec/set_probe_sink_operator.cpp   |  4 ++--
 be/src/pipeline/pipeline_x/pipeline_x_task.cpp     |  2 +-
 be/src/pipeline/task_queue.cpp                     |  2 +-
 be/src/pipeline/task_queue.h                       |  2 +-
 be/src/runtime/decimalv2_value.cpp                 |  2 +-
 be/src/runtime/memory/mem_tracker_limiter.cpp      |  4 ++--
 be/src/runtime/workload_group/workload_group.cpp   |  2 +-
 .../workload_group/workload_group_manager.cpp      |  4 ++--
 be/src/util/counts.h                               |  4 ++--
 be/src/util/cpu_info.cpp                           |  2 +-
 be/src/util/date_func.cpp                          |  4 ++--
 be/src/util/hash_util.hpp                          |  2 +-
 be/src/util/mem_info.cpp                           | 12 +++++-----
 be/src/util/os_util.cpp                            |  6 ++---
 be/src/util/parse_util.cpp                         |  6 ++---
 be/src/util/runtime_profile.cpp                    |  2 +-
 be/src/util/url_coding.cpp                         |  2 +-
 .../aggregate_function_avg_weighted.h              |  2 +-
 .../aggregate_function_stddev.h                    |  2 +-
 be/src/vec/columns/column.h                        |  7 ------
 be/src/vec/columns/column_array.h                  |  4 ----
 be/src/vec/columns/column_complex.h                |  6 -----
 be/src/vec/columns/column_const.cpp                | 16 -------------
 be/src/vec/columns/column_const.h                  |  2 --
 be/src/vec/columns/column_decimal.h                |  5 ----
 be/src/vec/columns/column_dictionary.h             |  6 -----
 be/src/vec/columns/column_dummy.h                  | 14 -----------
 be/src/vec/columns/column_fixed_length_object.h    |  6 -----
 be/src/vec/columns/column_impl.h                   | 27 ----------------------
 be/src/vec/columns/column_map.h                    |  3 ---
 be/src/vec/columns/column_nullable.h               |  4 ----
 be/src/vec/columns/column_object.h                 |  5 ----
 be/src/vec/columns/column_string.h                 |  4 ----
 be/src/vec/columns/column_struct.cpp               | 23 ------------------
 be/src/vec/columns/column_struct.h                 |  1 -
 be/src/vec/columns/column_vector.h                 | 17 +++++++-------
 be/src/vec/columns/predicate_column.h              |  6 -----
 be/src/vec/common/uint128.h                        |  7 ++++++
 be/src/vec/core/types.h                            |  6 ++---
 be/src/vec/data_types/data_type.h                  |  2 +-
 be/src/vec/data_types/data_type_decimal.h          |  3 ++-
 .../vec/data_types/serde/data_type_number_serde.h  |  2 +-
 be/src/vec/exec/scan/scanner_context.cpp           |  4 ++--
 be/src/vec/exec/vset_operation_node.cpp            |  4 ++--
 .../exprs/table_function/vexplode_json_array.cpp   |  2 +-
 be/src/vec/functions/array/function_array_join.h   |  2 +-
 be/src/vec/functions/function_cast.h               | 12 +++++-----
 be/src/vec/functions/function_quantile_state.cpp   |  2 +-
 be/src/vec/functions/int_div.h                     |  6 ++---
 be/src/vec/sink/writer/vtablet_writer.cpp          |  8 +++----
 be/test/olap/wal/wal_manager_test.cpp              |  4 ++--
 be/test/vec/core/block_spill_test.cpp              |  8 +++----
 be/test/vec/core/block_test.cpp                    |  4 ++--
 .../serde/data_type_serde_arrow_test.cpp           |  2 +-
 .../serde/data_type_serde_mysql_test.cpp           |  2 +-
 .../data_types/serde/data_type_serde_pb_test.cpp   |  2 +-
 .../vec/data_types/serde/data_type_serde_test.cpp  |  2 +-
 be/test/vec/jsonb/serialize_test.cpp               |  2 +-
 68 files changed, 115 insertions(+), 240 deletions(-)

diff --git a/be/CMakeLists.txt b/be/CMakeLists.txt
index 9b72bc61777..f5d99c69962 100644
--- a/be/CMakeLists.txt
+++ b/be/CMakeLists.txt
@@ -279,9 +279,14 @@ if (COMPILER_CLANG)
                         -Wunused-volatile-lvalue
                         -Wunused-template
                         -Wunused-member-function
-                        -Wunused-macros)
-    add_compile_options(-Wno-vla-extension)
-    add_compile_options(-Wno-gnu-statement-expression)
+                        -Wunused-macros
+                        -Wconversion)
+    add_compile_options(-Wno-vla-extension
+                        -Wno-gnu-statement-expression
+                        -Wno-implicit-float-conversion
+                        -Wno-implicit-int-conversion
+                        -Wno-sign-conversion
+                        -Wno-shorten-64-to-32)
     if (USE_LIBCPP)
         add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-stdlib=libc++>)
         if (NOT OS_MACOSX)
diff --git a/be/src/exprs/bloom_filter_func.h b/be/src/exprs/bloom_filter_func.h
index 052893b0c0f..1473d4a4288 100644
--- a/be/src/exprs/bloom_filter_func.h
+++ b/be/src/exprs/bloom_filter_func.h
@@ -42,12 +42,12 @@ public:
     Status merge(BloomFilterAdaptor* other) { return 
_bloom_filter->merge(*other->_bloom_filter); }
 
     Status init(int len) {
-        int log_space = log2(len);
+        int log_space = (int)log2(len);
         return _bloom_filter->init(log_space, /*hash_seed*/ 0);
     }
 
     Status init(butil::IOBufAsZeroCopyInputStream* data, const size_t 
data_size) {
-        int log_space = log2(data_size);
+        int log_space = (int)log2(data_size);
         return _bloom_filter->init_from_directory(log_space, data, data_size, 
false, 0);
     }
 
diff --git a/be/src/glibc-compatibility/CMakeLists.txt 
b/be/src/glibc-compatibility/CMakeLists.txt
index a29e712f4a0..c605e83951f 100644
--- a/be/src/glibc-compatibility/CMakeLists.txt
+++ b/be/src/glibc-compatibility/CMakeLists.txt
@@ -70,6 +70,7 @@ if (GLIBC_COMPATIBILITY)
             -Wno-unused-command-line-argument
             -Wno-unused-but-set-variable
             -Wno-unused-macros
+            -Wno-conversion
             )
     elseif (COMPILER_GCC)
         target_compile_options(
diff --git a/be/src/http/http_client.h b/be/src/http/http_client.h
index c80d0c6f56a..d80f484ce80 100644
--- a/be/src/http/http_client.h
+++ b/be/src/http/http_client.h
@@ -109,7 +109,7 @@ public:
                                     "actrual is : {}",
                                     cl));
             }
-            *length = cl;
+            *length = (uint64_t)cl;
             return Status::OK();
         }
         return Status::InternalError("failed to get content length. err code: 
{}", code);
diff --git a/be/src/olap/cumulative_compaction_policy.cpp 
b/be/src/olap/cumulative_compaction_policy.cpp
index f8821748e6b..0d35ae7ca4f 100644
--- a/be/src/olap/cumulative_compaction_policy.cpp
+++ b/be/src/olap/cumulative_compaction_policy.cpp
@@ -121,7 +121,7 @@ void 
SizeBasedCumulativeCompactionPolicy::_calc_promotion_size(Tablet* tablet,
                                                                
RowsetMetaSharedPtr base_rowset_meta,
                                                                int64_t* 
promotion_size) {
     int64_t base_size = base_rowset_meta->total_disk_size();
-    *promotion_size = base_size * _promotion_ratio;
+    *promotion_size = int64_t(base_size * _promotion_ratio);
 
     // promotion_size is between _promotion_size and _promotion_min_size
     if (*promotion_size >= _promotion_size) {
diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp
index 7cddd2abe01..87ae20237e5 100644
--- a/be/src/olap/memtable.cpp
+++ b/be/src/olap/memtable.cpp
@@ -210,8 +210,8 @@ void MemTable::insert(const vectorized::Block* input_block, 
const std::vector<ui
     }
     auto block_size1 = _input_mutable_block.allocated_bytes();
     g_memtable_input_block_allocated_size << block_size1 - block_size0;
-    size_t input_size = target_block.bytes() * num_rows / target_block.rows() *
-                        config::memtable_insert_memory_ratio;
+    auto input_size = size_t(target_block.bytes() * num_rows / 
target_block.rows() *
+                             config::memtable_insert_memory_ratio);
     _mem_usage += input_size;
     _insert_mem_tracker->consume(input_size);
     for (int i = 0; i < num_rows; i++) {
diff --git a/be/src/olap/olap_server.cpp b/be/src/olap/olap_server.cpp
index d3150c17e14..a2b5bf56de9 100644
--- a/be/src/olap/olap_server.cpp
+++ b/be/src/olap/olap_server.cpp
@@ -331,7 +331,7 @@ void StorageEngine::_garbage_sweeper_thread_callback() {
         // when usage = 0.88,         ratio is approximately 0.0057.
         double ratio = (1.1 * (pi / 2 - std::atan(usage * 100 / 5 - 14)) - 
0.28) / pi;
         ratio = ratio > 0 ? ratio : 0;
-        uint32_t curr_interval = max_interval * ratio;
+        auto curr_interval = uint32_t(max_interval * ratio);
         curr_interval = std::max(curr_interval, min_interval);
         curr_interval = std::min(curr_interval, max_interval);
 
diff --git a/be/src/olap/rowset/segment_v2/bloom_filter.cpp 
b/be/src/olap/rowset/segment_v2/bloom_filter.cpp
index 12a7f2395e7..19e2b93d29c 100644
--- a/be/src/olap/rowset/segment_v2/bloom_filter.cpp
+++ b/be/src/olap/rowset/segment_v2/bloom_filter.cpp
@@ -53,7 +53,7 @@ uint32_t BloomFilter::used_bits(uint64_t value) {
 
 uint32_t BloomFilter::optimal_bit_num(uint64_t n, double fpp) {
     // ref parquet bloom_filter branch(BlockSplitBloomFilter.java)
-    uint32_t num_bits = -8 * (double)n / log(1 - pow(fpp, 1.0 / 8));
+    auto num_bits = uint32_t(-8 * (double)n / log(1 - pow(fpp, 1.0 / 8)));
     uint32_t max_bits = MAXIMUM_BYTES << 3;
     if (num_bits > max_bits) {
         num_bits = max_bits;
diff --git a/be/src/olap/rowset/segment_v2/inverted_index_cache.cpp 
b/be/src/olap/rowset/segment_v2/inverted_index_cache.cpp
index adbce0b4064..f6a0951b44c 100644
--- a/be/src/olap/rowset/segment_v2/inverted_index_cache.cpp
+++ b/be/src/olap/rowset/segment_v2/inverted_index_cache.cpp
@@ -50,9 +50,9 @@ InvertedIndexSearcherCache::InvertedIndexSearcherCache(size_t 
capacity, uint32_t
     static constexpr size_t fd_bound = 100000;
     size_t search_limit_percent = 
config::inverted_index_fd_number_limit_percent;
     if (fd_number <= fd_bound) {
-        search_limit_percent *= 0.25; // default 10%
+        search_limit_percent = size_t(search_limit_percent * 0.25); // default 
10%
     } else if (fd_number > fd_bound && fd_number < fd_bound * 5) {
-        search_limit_percent *= 0.5; // default 20%
+        search_limit_percent = size_t(search_limit_percent * 0.5); // default 
20%
     }
 
     uint64_t open_searcher_limit = fd_number * search_limit_percent / 100;
diff --git a/be/src/olap/wal/wal_table.cpp b/be/src/olap/wal/wal_table.cpp
index 641ef8c6647..ec0c412379a 100644
--- a/be/src/olap/wal/wal_table.cpp
+++ b/be/src/olap/wal/wal_table.cpp
@@ -145,15 +145,16 @@ bool WalTable::_need_replay(std::shared_ptr<WalInfo> 
wal_info) {
         return true;
     }
 #ifndef BE_TEST
-    auto replay_interval = 0;
+    int64_t replay_interval = 0;
     if (wal_info->get_retry_num() >= 
config::group_commit_replay_wal_retry_num) {
-        replay_interval = pow(2, config::group_commit_replay_wal_retry_num) *
-                                  
config::group_commit_replay_wal_retry_interval_seconds * 1000 +
-                          (wal_info->get_retry_num() - 
config::group_commit_replay_wal_retry_num) *
-                                  
config::group_commit_replay_wal_retry_interval_max_seconds * 1000;
+        replay_interval =
+                int64_t(pow(2, config::group_commit_replay_wal_retry_num) *
+                                
config::group_commit_replay_wal_retry_interval_seconds * 1000 +
+                        (wal_info->get_retry_num() - 
config::group_commit_replay_wal_retry_num) *
+                                
config::group_commit_replay_wal_retry_interval_max_seconds * 1000);
     } else {
-        replay_interval = pow(2, wal_info->get_retry_num()) *
-                          
config::group_commit_replay_wal_retry_interval_seconds * 1000;
+        replay_interval = int64_t(pow(2, wal_info->get_retry_num()) *
+                                  
config::group_commit_replay_wal_retry_interval_seconds * 1000);
     }
     return UnixMillis() - wal_info->get_start_time_ms() >= replay_interval;
 #else
diff --git a/be/src/pipeline/exec/set_probe_sink_operator.cpp 
b/be/src/pipeline/exec/set_probe_sink_operator.cpp
index 2d7bcd42c2b..76248f2c75c 100644
--- a/be/src/pipeline/exec/set_probe_sink_operator.cpp
+++ b/be/src/pipeline/exec/set_probe_sink_operator.cpp
@@ -238,8 +238,8 @@ void 
SetProbeSinkOperatorX<is_intersect>::_refresh_hash_table(
                     bool is_need_shrink =
                             
arg.hash_table->should_be_shrink(valid_element_in_hash_tbl);
                     if (is_intersect || is_need_shrink) {
-                        tmp_hash_table->init_buf_size(
-                                valid_element_in_hash_tbl / 
arg.hash_table->get_factor() + 1);
+                        tmp_hash_table->init_buf_size(size_t(
+                                valid_element_in_hash_tbl / 
arg.hash_table->get_factor() + 1));
                     }
 
                     arg.init_iterator();
diff --git a/be/src/pipeline/pipeline_x/pipeline_x_task.cpp 
b/be/src/pipeline/pipeline_x/pipeline_x_task.cpp
index 4b85df05484..4bca88ec931 100644
--- a/be/src/pipeline/pipeline_x/pipeline_x_task.cpp
+++ b/be/src/pipeline/pipeline_x/pipeline_x_task.cpp
@@ -327,7 +327,7 @@ bool PipelineXTask::should_revoke_memory(RuntimeState* 
state, int64_t revocable_
         DCHECK(big_memory_operator_num >= 0);
         int64_t mem_limit_of_op;
         if (0 == big_memory_operator_num) {
-            mem_limit_of_op = (double)query_weighted_limit * 0.8;
+            mem_limit_of_op = int64_t(query_weighted_limit * 0.8);
         } else {
             mem_limit_of_op = query_weighted_limit / big_memory_operator_num;
         }
diff --git a/be/src/pipeline/task_queue.cpp b/be/src/pipeline/task_queue.cpp
index a79d865821d..617cd7a78d1 100644
--- a/be/src/pipeline/task_queue.cpp
+++ b/be/src/pipeline/task_queue.cpp
@@ -71,7 +71,7 @@ PipelineTask* PriorityTaskQueue::_try_take_unprotected(bool 
is_steal) {
         }
     }
     DCHECK(level != -1);
-    _queue_level_min_vruntime = min_vruntime;
+    _queue_level_min_vruntime = uint64_t(min_vruntime);
 
     auto task = _sub_queues[level].try_take(is_steal);
     if (task) {
diff --git a/be/src/pipeline/task_queue.h b/be/src/pipeline/task_queue.h
index a6799fdb0c6..02994511019 100644
--- a/be/src/pipeline/task_queue.h
+++ b/be/src/pipeline/task_queue.h
@@ -76,7 +76,7 @@ public:
 
     void inc_runtime(uint64_t delta_time) { _runtime += delta_time; }
 
-    void adjust_runtime(uint64_t vruntime) { this->_runtime = vruntime * 
_level_factor; }
+    void adjust_runtime(uint64_t vruntime) { this->_runtime = 
uint64_t(vruntime * _level_factor); }
 
     bool empty() { return _queue.empty(); }
 
diff --git a/be/src/runtime/decimalv2_value.cpp 
b/be/src/runtime/decimalv2_value.cpp
index 6155372ae6d..f3466ca47b1 100644
--- a/be/src/runtime/decimalv2_value.cpp
+++ b/be/src/runtime/decimalv2_value.cpp
@@ -328,7 +328,7 @@ static double sqrt_fractional(int128_t sqrt_int, int128_t 
remainder) {
 
 const int128_t DecimalV2Value::SQRT_MOLECULAR_MAGNIFICATION = 
get_scale_base(PRECISION / 2);
 const int128_t DecimalV2Value::SQRT_DENOMINATOR =
-        std::sqrt(ONE_BILLION) * get_scale_base(PRECISION / 2 - SCALE);
+        int128_t(std::sqrt(ONE_BILLION) * get_scale_base(PRECISION / 2 - 
SCALE));
 
 DecimalV2Value DecimalV2Value::sqrt(const DecimalV2Value& v) {
     int128_t x = v.value();
diff --git a/be/src/runtime/memory/mem_tracker_limiter.cpp 
b/be/src/runtime/memory/mem_tracker_limiter.cpp
index 3edbd21c745..84b80699431 100644
--- a/be/src/runtime/memory/mem_tracker_limiter.cpp
+++ b/be/src/runtime/memory/mem_tracker_limiter.cpp
@@ -606,9 +606,9 @@ int64_t MemTrackerLimiter::free_top_overcommit_query(
                                                              
tracker->consumption()));
                         continue;
                     }
-                    int64_t overcommit_ratio =
+                    auto overcommit_ratio = int64_t(
                             (static_cast<double>(tracker->consumption()) / 
tracker->limit()) *
-                            10000;
+                            10000);
                     max_pq.emplace(overcommit_ratio, tracker->label());
                     query_consumption[tracker->label()] = 
tracker->consumption();
                 }
diff --git a/be/src/runtime/workload_group/workload_group.cpp 
b/be/src/runtime/workload_group/workload_group.cpp
index 1b0430d64fb..19ed39a6ab7 100644
--- a/be/src/runtime/workload_group/workload_group.cpp
+++ b/be/src/runtime/workload_group/workload_group.cpp
@@ -119,7 +119,7 @@ int64_t WorkloadGroup::memory_used() {
 }
 
 void WorkloadGroup::set_weighted_memory_used(int64_t wg_total_mem_used, double 
ratio) {
-    _weighted_mem_used.store(wg_total_mem_used * ratio, 
std::memory_order_relaxed);
+    _weighted_mem_used.store(int64_t(wg_total_mem_used * ratio), 
std::memory_order_relaxed);
 }
 
 void WorkloadGroup::add_mem_tracker_limiter(std::shared_ptr<MemTrackerLimiter> 
mem_tracker_ptr) {
diff --git a/be/src/runtime/workload_group/workload_group_manager.cpp 
b/be/src/runtime/workload_group/workload_group_manager.cpp
index 027cfb2b2dd..78e2cd1fe06 100644
--- a/be/src/runtime/workload_group/workload_group_manager.cpp
+++ b/be/src/runtime/workload_group/workload_group_manager.cpp
@@ -198,7 +198,7 @@ void WorkloadGroupMgr::refresh_wg_memory_info() {
     for (auto& wg : _workload_groups) {
         auto wg_mem_limit = wg.second->memory_limit();
         auto& wg_mem_info = wgs_mem_info[wg.first];
-        wg_mem_info.weighted_mem_used = wg_mem_info.total_mem_used * ratio;
+        wg_mem_info.weighted_mem_used = int64_t(wg_mem_info.total_mem_used * 
ratio);
         wg_mem_info.mem_used_ratio = (double)wg_mem_info.weighted_mem_used / 
wg_mem_limit;
 
         wg.second->set_weighted_memory_used(wg_mem_info.total_mem_used, ratio);
@@ -237,7 +237,7 @@ void WorkloadGroupMgr::refresh_wg_memory_info() {
                 continue;
             }
             auto query_consumption = 
query_ctx->query_mem_tracker->consumption();
-            int64_t query_weighted_consumption = query_consumption * ratio;
+            auto query_weighted_consumption = int64_t(query_consumption * 
ratio);
             query_ctx->set_weighted_mem(query_weighted_mem_limit, 
query_weighted_consumption);
 
             if (wg_mem_info.is_high_wartermark || 
wg_mem_info.is_low_wartermark) {
diff --git a/be/src/util/counts.h b/be/src/util/counts.h
index 8291d3a5b19..fec18cedcd6 100644
--- a/be/src/util/counts.h
+++ b/be/src/util/counts.h
@@ -83,8 +83,8 @@ public:
 
     double get_percentile(std::vector<std::pair<int64_t, uint32_t>>& counts,
                           double position) const {
-        long lower = std::floor(position);
-        long higher = std::ceil(position);
+        long lower = long(std::floor(position));
+        long higher = long(std::ceil(position));
 
         auto iter = counts.begin();
         for (; iter != counts.end() && iter->second < lower + 1; ++iter)
diff --git a/be/src/util/cpu_info.cpp b/be/src/util/cpu_info.cpp
index 6ead3a61ead..116dacb8da7 100644
--- a/be/src/util/cpu_info.cpp
+++ b/be/src/util/cpu_info.cpp
@@ -214,7 +214,7 @@ void CpuInfo::init() {
 
     int num_cores = cgroup_bandwidth_quota(physical_num_cores);
     if (max_mhz != 0) {
-        cycles_per_ms_ = max_mhz * 1000;
+        cycles_per_ms_ = int64_t(max_mhz) * 1000;
     } else {
         cycles_per_ms_ = 1000000;
     }
diff --git a/be/src/util/date_func.cpp b/be/src/util/date_func.cpp
index 94b74b58280..4363cb32440 100644
--- a/be/src/util/date_func.cpp
+++ b/be/src/util/date_func.cpp
@@ -130,7 +130,7 @@ int32_t timev2_to_buffer_from_double(double time, char* 
buffer, int scale) {
         time = -time;
         *buffer++ = '-';
     }
-    int64_t m_time = time;
+    auto m_time = int64_t(time);
     // m_time = hour * 3600 * 1000 * 1000 + minute * 60 * 1000 * 1000 + second 
* 1000 * 1000 + microsecond
     m_time = check_over_max_time(m_time);
     int64_t hour = m_time / ((int64_t)3600 * 1000 * 1000);
@@ -196,7 +196,7 @@ std::string timev2_to_buffer_from_double(double time, int 
scale) {
         time = -time;
         fmt::format_to(buffer, "-");
     }
-    int64_t m_time = time;
+    auto m_time = int64_t(time);
     m_time = check_over_max_time(m_time);
     // m_time = hour * 3600 * 1000 * 1000 + minute * 60 * 1000 * 1000 + second 
* 1000 * 1000 + microsecond
     int64_t hour = m_time / ((int64_t)3600 * 1000 * 1000);
diff --git a/be/src/util/hash_util.hpp b/be/src/util/hash_util.hpp
index 402797a8e35..8cb1bc2754a 100644
--- a/be/src/util/hash_util.hpp
+++ b/be/src/util/hash_util.hpp
@@ -41,7 +41,7 @@ public:
     template <typename T>
     static uint32_t fixed_len_to_uint32(T value) {
         if constexpr (sizeof(T) <= sizeof(uint32_t)) {
-            return value;
+            return (uint32_t)value;
         }
         return std::hash<T>()(value);
     }
diff --git a/be/src/util/mem_info.cpp b/be/src/util/mem_info.cpp
index 17abbb8e93e..823490942af 100644
--- a/be/src/util/mem_info.cpp
+++ b/be/src/util/mem_info.cpp
@@ -354,10 +354,10 @@ int64_t MemInfo::tg_enable_overcommit_group_gc(int64_t 
request_free_memory,
         }
 
         // todo: GC according to resource group priority
-        int64_t tg_need_free_memory =
+        auto tg_need_free_memory = int64_t(
                 gc_all_exceeded ? exceeded_memorys[i]
                                 : static_cast<double>(exceeded_memorys[i]) / 
total_exceeded_memory *
-                                          request_free_memory /* exceeded 
memory as a weight */;
+                                          request_free_memory); // exceeded 
memory as a weight
         auto workload_group = task_groups[i];
         total_free_memory += workload_group->gc_memory(tg_need_free_memory, 
profile);
     }
@@ -423,7 +423,7 @@ void MemInfo::init() {
         _s_mem_limit = _s_physical_mem;
     }
     _s_mem_limit_str = PrettyPrinter::print(_s_mem_limit, TUnit::BYTES);
-    _s_soft_mem_limit = _s_mem_limit * config::soft_mem_limit_frac;
+    _s_soft_mem_limit = int64_t(_s_mem_limit * config::soft_mem_limit_frac);
     _s_soft_mem_limit_str = PrettyPrinter::print(_s_soft_mem_limit, 
TUnit::BYTES);
 
     _s_process_minor_gc_size =
@@ -456,9 +456,9 @@ void MemInfo::init() {
         //
         // upper sys_mem_available_low_water_mark, avoid wasting too much 
memory.
         _s_sys_mem_available_low_water_mark = std::max<int64_t>(
-                std::min<int64_t>(
-                        std::min<int64_t>(_s_physical_mem - _s_mem_limit, 
_s_physical_mem * 0.1),
-                        config::max_sys_mem_available_low_water_mark_bytes),
+                std::min<int64_t>(std::min<int64_t>(_s_physical_mem - 
_s_mem_limit,
+                                                    int64_t(_s_physical_mem * 
0.1)),
+                                  
config::max_sys_mem_available_low_water_mark_bytes),
                 0);
         _s_sys_mem_available_warning_water_mark = 
_s_sys_mem_available_low_water_mark * 2;
     }
diff --git a/be/src/util/os_util.cpp b/be/src/util/os_util.cpp
index b98b9aa7d5a..13ee4032f67 100644
--- a/be/src/util/os_util.cpp
+++ b/be/src/util/os_util.cpp
@@ -83,13 +83,13 @@ Status parse_stat(const std::string& buffer, std::string* 
name, ThreadStats* sta
 
     int64_t tmp;
     if (safe_strto64(splits[kUserTicks], &tmp)) {
-        stats->user_ns = tmp * (1e9 / kTicksPerSec);
+        stats->user_ns = int64_t(tmp * (1e9 / kTicksPerSec));
     }
     if (safe_strto64(splits[kKernelTicks], &tmp)) {
-        stats->kernel_ns = tmp * (1e9 / kTicksPerSec);
+        stats->kernel_ns = int64_t(tmp * (1e9 / kTicksPerSec));
     }
     if (safe_strto64(splits[kIoWait], &tmp)) {
-        stats->iowait_ns = tmp * (1e9 / kTicksPerSec);
+        stats->iowait_ns = int64_t(tmp * (1e9 / kTicksPerSec));
     }
     if (name != nullptr) {
         *name = extracted_name;
diff --git a/be/src/util/parse_util.cpp b/be/src/util/parse_util.cpp
index 4e685715f61..8e810764e7b 100644
--- a/be/src/util/parse_util.cpp
+++ b/be/src/util/parse_util.cpp
@@ -82,12 +82,12 @@ int64_t ParseUtil::parse_mem_spec(const std::string& 
mem_spec_str, int64_t paren
         }
 
         if (multiplier != -1) {
-            bytes = multiplier * limit_val;
+            bytes = int64_t(multiplier * limit_val);
         } else if (*is_percent) {
             if (parent_limit == -1) {
-                bytes = (static_cast<double>(limit_val) / 100.0) * 
physical_mem;
+                bytes = int64_t(static_cast<double>(limit_val) / 100.0 * 
physical_mem);
             } else {
-                bytes = (static_cast<double>(limit_val) / 100.0) * 
parent_limit;
+                bytes = int64_t(static_cast<double>(limit_val) / 100.0 * 
parent_limit);
             }
         }
     } else {
diff --git a/be/src/util/runtime_profile.cpp b/be/src/util/runtime_profile.cpp
index f5ed7250618..647c6e966c5 100644
--- a/be/src/util/runtime_profile.cpp
+++ b/be/src/util/runtime_profile.cpp
@@ -617,7 +617,7 @@ int64_t RuntimeProfile::units_per_second(const 
RuntimeProfile::Counter* total_co
     }
 
     double secs = static_cast<double>(timer->value()) / 1000.0 / 1000.0 / 
1000.0;
-    return total_counter->value() / secs;
+    return int64_t(total_counter->value() / secs);
 }
 
 int64_t RuntimeProfile::counter_sum(const std::vector<Counter*>* counters) {
diff --git a/be/src/util/url_coding.cpp b/be/src/util/url_coding.cpp
index 6ddd4c05401..d0bbf5aae63 100644
--- a/be/src/util/url_coding.cpp
+++ b/be/src/util/url_coding.cpp
@@ -88,7 +88,7 @@ bool url_decode(const std::string& in, std::string* out) {
 }
 
 void base64_encode(const std::string& in, std::string* out) {
-    out->resize(in.length() * (4.0 / 3) + 1);
+    out->resize(size_t(in.length() * (4.0 / 3) + 1));
     auto len = base64_encode(reinterpret_cast<const unsigned 
char*>(in.c_str()), in.length(),
                              (unsigned char*)out->c_str());
     out->resize(len);
diff --git a/be/src/vec/aggregate_functions/aggregate_function_avg_weighted.h 
b/be/src/vec/aggregate_functions/aggregate_function_avg_weighted.h
index 498ee20ccb8..e8596a00546 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_avg_weighted.h
+++ b/be/src/vec/aggregate_functions/aggregate_function_avg_weighted.h
@@ -85,7 +85,7 @@ struct AggregateFunctionAvgWeightedData {
         weight_sum = 0.0;
     }
 
-    double get() const { return weight_sum ? data_sum / weight_sum : 
std::nan(""); }
+    double get() const { return data_sum / weight_sum; }
 
     double data_sum = 0.0;
     double weight_sum = 0.0;
diff --git a/be/src/vec/aggregate_functions/aggregate_function_stddev.h 
b/be/src/vec/aggregate_functions/aggregate_function_stddev.h
index 456e91c3f6a..f095afb41b1 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_stddev.h
+++ b/be/src/vec/aggregate_functions/aggregate_function_stddev.h
@@ -104,7 +104,7 @@ struct BaseData {
         double sum_count = count + rhs.count;
         mean = rhs.mean + delta * count / sum_count;
         m2 = rhs.m2 + m2 + (delta * delta) * rhs.count * count / sum_count;
-        count = sum_count;
+        count = int64_t(sum_count);
     }
 
     void add(const IColumn* column, size_t row_num) {
diff --git a/be/src/vec/columns/column.h b/be/src/vec/columns/column.h
index afb97542e5a..f1bcee1ad7d 100644
--- a/be/src/vec/columns/column.h
+++ b/be/src/vec/columns/column.h
@@ -496,8 +496,6 @@ public:
       */
     using ColumnIndex = UInt64;
     using Selector = PaddedPODArray<ColumnIndex>;
-    virtual std::vector<MutablePtr> scatter(ColumnIndex num_columns,
-                                            const Selector& selector) const = 
0;
 
     virtual void append_data_by_selector(MutablePtr& res, const Selector& 
selector) const = 0;
 
@@ -695,11 +693,6 @@ public:
     bool is_date_time = false;
 
 protected:
-    /// Template is to devirtualize calls to insert_from method.
-    /// In derived classes (that use final keyword), implement scatter method 
as call to scatter_impl.
-    template <typename Derived>
-    std::vector<MutablePtr> scatter_impl(ColumnIndex num_columns, const 
Selector& selector) const;
-
     template <typename Derived>
     void append_data_by_selector_impl(MutablePtr& res, const Selector& 
selector) const;
 };
diff --git a/be/src/vec/columns/column_array.h 
b/be/src/vec/columns/column_array.h
index 5f6db27c594..3176f7a45c6 100644
--- a/be/src/vec/columns/column_array.h
+++ b/be/src/vec/columns/column_array.h
@@ -199,10 +199,6 @@ public:
     const ColumnPtr& get_offsets_ptr() const { return offsets; }
     ColumnPtr& get_offsets_ptr() { return offsets; }
 
-    MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) 
const override {
-        return scatter_impl<ColumnArray>(num_columns, selector);
-    }
-
     size_t ALWAYS_INLINE offset_at(ssize_t i) const { return get_offsets()[i - 
1]; }
     size_t ALWAYS_INLINE size_at(ssize_t i) const {
         return get_offsets()[i] - get_offsets()[i - 1];
diff --git a/be/src/vec/columns/column_complex.h 
b/be/src/vec/columns/column_complex.h
index 70d32da0b9b..d983fc9175e 100644
--- a/be/src/vec/columns/column_complex.h
+++ b/be/src/vec/columns/column_complex.h
@@ -258,12 +258,6 @@ public:
 
     ColumnPtr replicate(const IColumn::Offsets& replicate_offsets) const 
override;
 
-    [[noreturn]] MutableColumns scatter(IColumn::ColumnIndex num_columns,
-                                        const IColumn::Selector& selector) 
const override {
-        LOG(FATAL) << "scatter not implemented";
-        __builtin_unreachable();
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         this->template append_data_by_selector_impl<ColumnComplexType<T>>(res, 
selector);
diff --git a/be/src/vec/columns/column_const.cpp 
b/be/src/vec/columns/column_const.cpp
index e06e53b4289..096ec91ecea 100644
--- a/be/src/vec/columns/column_const.cpp
+++ b/be/src/vec/columns/column_const.cpp
@@ -126,22 +126,6 @@ void ColumnConst::update_hashes_with_value(uint64_t* 
__restrict hashes,
     }
 }
 
-MutableColumns ColumnConst::scatter(ColumnIndex num_columns, const Selector& 
selector) const {
-    if (s != selector.size()) {
-        LOG(FATAL) << fmt::format("Size of selector ({}) doesn't match size of 
column ({})",
-                                  selector.size(), s);
-    }
-
-    std::vector<size_t> counts = count_columns_size_in_selector(num_columns, 
selector);
-
-    MutableColumns res(num_columns);
-    for (size_t i = 0; i < num_columns; ++i) {
-        res[i] = clone_resized(counts[i]);
-    }
-
-    return res;
-}
-
 void ColumnConst::get_permutation(bool /*reverse*/, size_t /*limit*/, int 
/*nan_direction_hint*/,
                                   Permutation& res) const {
     res.resize(s);
diff --git a/be/src/vec/columns/column_const.h 
b/be/src/vec/columns/column_const.h
index bd6a817c283..016e4257402 100644
--- a/be/src/vec/columns/column_const.h
+++ b/be/src/vec/columns/column_const.h
@@ -220,8 +220,6 @@ public:
         }
     }
 
-    MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) 
const override;
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         assert_cast<Self&>(*res).resize(selector.size());
diff --git a/be/src/vec/columns/column_decimal.h 
b/be/src/vec/columns/column_decimal.h
index 0dbd8c14027..152d4165416 100644
--- a/be/src/vec/columns/column_decimal.h
+++ b/be/src/vec/columns/column_decimal.h
@@ -227,11 +227,6 @@ public:
 
     ColumnPtr replicate(const IColumn::Offsets& offsets) const override;
 
-    MutableColumns scatter(IColumn::ColumnIndex num_columns,
-                           const IColumn::Selector& selector) const override {
-        return this->template scatter_impl<Self>(num_columns, selector);
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         this->template append_data_by_selector_impl<Self>(res, selector);
diff --git a/be/src/vec/columns/column_dictionary.h 
b/be/src/vec/columns/column_dictionary.h
index 518d8faa008..175912f9668 100644
--- a/be/src/vec/columns/column_dictionary.h
+++ b/be/src/vec/columns/column_dictionary.h
@@ -190,12 +190,6 @@ public:
         __builtin_unreachable();
     }
 
-    [[noreturn]] MutableColumns scatter(IColumn::ColumnIndex num_columns,
-                                        const IColumn::Selector& selector) 
const override {
-        LOG(FATAL) << "scatter not supported in ColumnDictionary";
-        __builtin_unreachable();
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         LOG(FATAL) << "append_data_by_selector is not supported in 
ColumnDictionary!";
diff --git a/be/src/vec/columns/column_dummy.h 
b/be/src/vec/columns/column_dummy.h
index b94464be5ba..f330a60642a 100644
--- a/be/src/vec/columns/column_dummy.h
+++ b/be/src/vec/columns/column_dummy.h
@@ -116,20 +116,6 @@ public:
         return clone_dummy(offsets.back());
     }
 
-    MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) 
const override {
-        if (s != selector.size()) {
-            LOG(FATAL) << "Size of selector doesn't match size of column.";
-        }
-
-        std::vector<size_t> counts(num_columns);
-        for (auto idx : selector) ++counts[idx];
-
-        MutableColumns res(num_columns);
-        for (size_t i = 0; i < num_columns; ++i) res[i] = 
clone_resized(counts[i]);
-
-        return res;
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         size_t num_rows = size();
diff --git a/be/src/vec/columns/column_fixed_length_object.h 
b/be/src/vec/columns/column_fixed_length_object.h
index d44ebce53a7..5875b8f6c30 100644
--- a/be/src/vec/columns/column_fixed_length_object.h
+++ b/be/src/vec/columns/column_fixed_length_object.h
@@ -233,12 +233,6 @@ public:
         return res;
     }
 
-    [[noreturn]] MutableColumns scatter(IColumn::ColumnIndex num_columns,
-                                        const IColumn::Selector& selector) 
const override {
-        LOG(FATAL) << "scatter not supported";
-        __builtin_unreachable();
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         this->template append_data_by_selector_impl<Self>(res, selector);
diff --git a/be/src/vec/columns/column_impl.h b/be/src/vec/columns/column_impl.h
index 53f6be6c8c8..20292ad2351 100644
--- a/be/src/vec/columns/column_impl.h
+++ b/be/src/vec/columns/column_impl.h
@@ -32,33 +32,6 @@
 
 namespace doris::vectorized {
 
-template <typename Derived>
-std::vector<IColumn::MutablePtr> IColumn::scatter_impl(ColumnIndex num_columns,
-                                                       const Selector& 
selector) const {
-    size_t num_rows = size();
-
-    if (num_rows != selector.size()) {
-        LOG(FATAL) << fmt::format("Size of selector: {}, doesn't match size of 
column:{}",
-                                  selector.size(), num_rows);
-    }
-
-    std::vector<MutablePtr> columns(num_columns);
-    for (auto& column : columns) column = clone_empty();
-
-    {
-        size_t reserve_size =
-                num_rows * 1.1 / num_columns; /// 1.1 is just a guess. Better 
to use n-sigma rule.
-
-        if (reserve_size > 1)
-            for (auto& column : columns) column->reserve(reserve_size);
-    }
-
-    for (size_t i = 0; i < num_rows; ++i)
-        static_cast<Derived&>(*columns[selector[i]]).insert_from(*this, i);
-
-    return columns;
-}
-
 template <typename Derived>
 void IColumn::append_data_by_selector_impl(MutablePtr& res, const Selector& 
selector) const {
     size_t num_rows = size();
diff --git a/be/src/vec/columns/column_map.h b/be/src/vec/columns/column_map.h
index 0fe61ccdaeb..ed5a692defd 100644
--- a/be/src/vec/columns/column_map.h
+++ b/be/src/vec/columns/column_map.h
@@ -118,9 +118,6 @@ public:
     size_t filter(const Filter& filter) override;
     ColumnPtr permute(const Permutation& perm, size_t limit) const override;
     ColumnPtr replicate(const Offsets& offsets) const override;
-    MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) 
const override {
-        return scatter_impl<ColumnMap>(num_columns, selector);
-    }
 
     int compare_at(size_t n, size_t m, const IColumn& rhs_, int 
nan_direction_hint) const override;
 
diff --git a/be/src/vec/columns/column_nullable.h 
b/be/src/vec/columns/column_nullable.h
index 1bec1165aae..462b28d3a7d 100644
--- a/be/src/vec/columns/column_nullable.h
+++ b/be/src/vec/columns/column_nullable.h
@@ -227,10 +227,6 @@ public:
     void update_hashes_with_value(uint64_t* __restrict hashes,
                                   const uint8_t* __restrict null_data) const 
override;
 
-    MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) 
const override {
-        return scatter_impl<ColumnNullable>(num_columns, selector);
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         append_data_by_selector_impl<ColumnNullable>(res, selector);
diff --git a/be/src/vec/columns/column_object.h 
b/be/src/vec/columns/column_object.h
index 39d156d681b..a940b4a8811 100644
--- a/be/src/vec/columns/column_object.h
+++ b/be/src/vec/columns/column_object.h
@@ -456,11 +456,6 @@ public:
         LOG(FATAL) << "should not call the method in column object";
     }
 
-    MutableColumns scatter(ColumnIndex, const Selector&) const override {
-        LOG(FATAL) << "should not call the method in column object";
-        return {};
-    }
-
     void replace_column_data(const IColumn&, size_t row, size_t self_row) 
override {
         LOG(FATAL) << "should not call the method in column object";
     }
diff --git a/be/src/vec/columns/column_string.h 
b/be/src/vec/columns/column_string.h
index 04a599f5e9b..b858ab86bf3 100644
--- a/be/src/vec/columns/column_string.h
+++ b/be/src/vec/columns/column_string.h
@@ -516,10 +516,6 @@ public:
 
     ColumnPtr replicate(const Offsets& replicate_offsets) const override;
 
-    MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) 
const override {
-        return scatter_impl<ColumnString>(num_columns, selector);
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         append_data_by_selector_impl<ColumnString>(res, selector);
diff --git a/be/src/vec/columns/column_struct.cpp 
b/be/src/vec/columns/column_struct.cpp
index b1a415de272..d075b040e6d 100644
--- a/be/src/vec/columns/column_struct.cpp
+++ b/be/src/vec/columns/column_struct.cpp
@@ -319,29 +319,6 @@ MutableColumnPtr ColumnStruct::get_shrinked_column() {
     return ColumnStruct::create(std::move(new_columns));
 }
 
-MutableColumns ColumnStruct::scatter(ColumnIndex num_columns, const Selector& 
selector) const {
-    const size_t tuple_size = columns.size();
-    std::vector<MutableColumns> scattered_tuple_elements(tuple_size);
-
-    for (size_t tuple_element_idx = 0; tuple_element_idx < tuple_size; 
++tuple_element_idx) {
-        scattered_tuple_elements[tuple_element_idx] =
-                columns[tuple_element_idx]->scatter(num_columns, selector);
-    }
-
-    MutableColumns res(num_columns);
-
-    for (size_t scattered_idx = 0; scattered_idx < num_columns; 
++scattered_idx) {
-        MutableColumns new_columns(tuple_size);
-        for (size_t tuple_element_idx = 0; tuple_element_idx < tuple_size; 
++tuple_element_idx) {
-            new_columns[tuple_element_idx] =
-                    
std::move(scattered_tuple_elements[tuple_element_idx][scattered_idx]);
-        }
-        res[scattered_idx] = ColumnStruct::create(std::move(new_columns));
-    }
-
-    return res;
-}
-
 void ColumnStruct::reserve(size_t n) {
     const size_t tuple_size = columns.size();
     for (size_t i = 0; i < tuple_size; ++i) {
diff --git a/be/src/vec/columns/column_struct.h 
b/be/src/vec/columns/column_struct.h
index ce4b5f461d7..34d1e3ecf0e 100644
--- a/be/src/vec/columns/column_struct.h
+++ b/be/src/vec/columns/column_struct.h
@@ -151,7 +151,6 @@ public:
     size_t filter(const Filter& filter) override;
     ColumnPtr permute(const Permutation& perm, size_t limit) const override;
     ColumnPtr replicate(const Offsets& offsets) const override;
-    MutableColumns scatter(ColumnIndex num_columns, const Selector& selector) 
const override;
 
     // ColumnPtr index(const IColumn & indexes, size_t limit) const override;
     int compare_at(size_t n, size_t m, const IColumn& rhs_, int 
nan_direction_hint) const override;
diff --git a/be/src/vec/columns/column_vector.h 
b/be/src/vec/columns/column_vector.h
index a2cfb7cd041..7e035b8b47a 100644
--- a/be/src/vec/columns/column_vector.h
+++ b/be/src/vec/columns/column_vector.h
@@ -191,10 +191,14 @@ public:
     }
 
     void insert_range_of_integer(T begin, T end) {
-        auto old_size = data.size();
-        data.resize(old_size + (end - begin));
-        for (int i = 0; i < end - begin; i++) {
-            data[old_size + i] = begin + i;
+        if constexpr (std::is_integral_v<T>) {
+            auto old_size = data.size();
+            data.resize(old_size + (end - begin));
+            for (int i = 0; i < end - begin; i++) {
+                data[old_size + i] = begin + i;
+            }
+        } else {
+            LOG(FATAL) << "double column not support insert_range_of_integer";
         }
     }
 
@@ -404,11 +408,6 @@ public:
 
     ColumnPtr replicate(const IColumn::Offsets& offsets) const override;
 
-    MutableColumns scatter(IColumn::ColumnIndex num_columns,
-                           const IColumn::Selector& selector) const override {
-        return this->template scatter_impl<Self>(num_columns, selector);
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         this->template append_data_by_selector_impl<Self>(res, selector);
diff --git a/be/src/vec/columns/predicate_column.h 
b/be/src/vec/columns/predicate_column.h
index 198c7ee9cd4..2a390d39d29 100644
--- a/be/src/vec/columns/predicate_column.h
+++ b/be/src/vec/columns/predicate_column.h
@@ -429,12 +429,6 @@ public:
         __builtin_unreachable();
     }
 
-    [[noreturn]] MutableColumns scatter(IColumn::ColumnIndex num_columns,
-                                        const IColumn::Selector& selector) 
const override {
-        LOG(FATAL) << "scatter not supported in PredicateColumnType";
-        __builtin_unreachable();
-    }
-
     void append_data_by_selector(MutableColumnPtr& res,
                                  const IColumn::Selector& selector) const 
override {
         LOG(FATAL) << "append_data_by_selector is not supported in 
PredicateColumnType!";
diff --git a/be/src/vec/common/uint128.h b/be/src/vec/common/uint128.h
index a9c30328ab7..28b1f62dc72 100644
--- a/be/src/vec/common/uint128.h
+++ b/be/src/vec/common/uint128.h
@@ -20,6 +20,7 @@
 
 #pragma once
 
+#include <cstdint>
 #include <iomanip>
 #include <sstream>
 #include <tuple>
@@ -39,7 +40,13 @@ struct UInt128 {
 
     UInt128() = default;
     explicit UInt128(const UInt64 low_, const UInt64 high_) : low(low_), 
high(high_) {}
+    explicit UInt128(const Int128 rhs) : low(rhs % UINT64_MAX), high(rhs / 
UINT64_MAX) {}
     explicit UInt128(const UInt64 rhs) : low(rhs), high() {}
+    explicit UInt128(const int rhs) : low(rhs), high() {}
+    explicit UInt128(const int64_t rhs) : low(rhs), high() {}
+    explicit UInt128(const uint32_t rhs) : low(rhs), high() {}
+    explicit UInt128(const double rhs)
+            : low((UInt64)rhs % UINT64_MAX), high(UInt64(rhs / 
double(INT64_MAX))) {}
 
     auto tuple() const { return std::tie(high, low); }
 
diff --git a/be/src/vec/core/types.h b/be/src/vec/core/types.h
index fd3e16e0a2b..73025b166e5 100644
--- a/be/src/vec/core/types.h
+++ b/be/src/vec/core/types.h
@@ -541,11 +541,11 @@ struct Decimal {
 
     /// If T is integral, the given value will be rounded to integer.
     template <std::floating_point U>
-    static constexpr U type_round(U value) noexcept {
+    static constexpr T type_round(U value) noexcept {
         if constexpr (wide::IntegralConcept<T>()) {
-            return round(value);
+            return T(round(value));
         }
-        return value;
+        return T(value);
     }
 
     static Decimal double_to_decimal(double value_) {
diff --git a/be/src/vec/data_types/data_type.h 
b/be/src/vec/data_types/data_type.h
index bc53fac6a37..e708cda164e 100644
--- a/be/src/vec/data_types/data_type.h
+++ b/be/src/vec/data_types/data_type.h
@@ -57,7 +57,7 @@ using DataTypePtr = std::shared_ptr<const IDataType>;
 using DataTypes = std::vector<DataTypePtr>;
 constexpr auto SERIALIZED_MEM_SIZE_LIMIT = 256;
 inline size_t upper_int32(size_t size) {
-    return (3 + size) / 4.0;
+    return size_t((3 + size) / 4.0);
 }
 
 /** Properties of data type.
diff --git a/be/src/vec/data_types/data_type_decimal.h 
b/be/src/vec/data_types/data_type_decimal.h
index 234078ad4c1..8bd7f8b0153 100644
--- a/be/src/vec/data_types/data_type_decimal.h
+++ b/be/src/vec/data_types/data_type_decimal.h
@@ -653,7 +653,8 @@ void convert_to_decimal(typename ToDataType::FieldType* dst,
             }
         }
         for (size_t i = 0; i < size; ++i) {
-            dst[i].value = FromFieldType(src[i] * multiplier.value + ((src[i] 
>= 0) ? 0.5 : -0.5));
+            dst[i].value = typename ToDataType::FieldType::NativeType(
+                    FromFieldType(src[i] * multiplier.value + ((src[i] >= 0) ? 
0.5 : -0.5)));
         }
     } else {
         using DecimalFrom =
diff --git a/be/src/vec/data_types/serde/data_type_number_serde.h 
b/be/src/vec/data_types/serde/data_type_number_serde.h
index fedee87d3bd..28e2ade1664 100644
--- a/be/src/vec/data_types/serde/data_type_number_serde.h
+++ b/be/src/vec/data_types/serde/data_type_number_serde.h
@@ -330,7 +330,7 @@ Status 
DataTypeNumberSerDe<T>::read_one_cell_from_json(IColumn& column,
         } else if (value.IsInt64()) {
             col.insert_value((T)value.GetInt64());
         } else if (value.IsFloat() || value.IsDouble()) {
-            col.insert_value((T)value.GetDouble());
+            col.insert_value(T(value.GetDouble()));
         } else {
             CHECK(false) << "Improssible";
         }
diff --git a/be/src/vec/exec/scan/scanner_context.cpp 
b/be/src/vec/exec/scan/scanner_context.cpp
index bb04046ef9f..8d4a9b3a164 100644
--- a/be/src/vec/exec/scan/scanner_context.cpp
+++ b/be/src/vec/exec/scan/scanner_context.cpp
@@ -327,8 +327,8 @@ void ScannerContext::_try_to_scale_up() {
 
         bool is_scale_up = false;
         // calculate the number of scanners that can be scheduled
-        int num_add = std::min(_num_running_scanners * SCALE_UP_RATIO,
-                               _max_thread_num * MAX_SCALE_UP_RATIO - 
_num_running_scanners);
+        int num_add = int(std::min(_num_running_scanners * SCALE_UP_RATIO,
+                                   _max_thread_num * MAX_SCALE_UP_RATIO - 
_num_running_scanners));
         if (_estimated_block_size > 0) {
             int most_add =
                     (_max_bytes_in_queue - _free_blocks_memory_usage) / 
_estimated_block_size;
diff --git a/be/src/vec/exec/vset_operation_node.cpp 
b/be/src/vec/exec/vset_operation_node.cpp
index 16c267b26df..d1f4d8ac2c8 100644
--- a/be/src/vec/exec/vset_operation_node.cpp
+++ b/be/src/vec/exec/vset_operation_node.cpp
@@ -521,8 +521,8 @@ void VSetOperationNode<is_intersect>::refresh_hash_table() {
                     bool is_need_shrink =
                             
arg.hash_table->should_be_shrink(_valid_element_in_hash_tbl);
                     if (is_intersect || is_need_shrink) {
-                        tmp_hash_table->init_buf_size(
-                                _valid_element_in_hash_tbl / 
arg.hash_table->get_factor() + 1);
+                        tmp_hash_table->init_buf_size(size_t(
+                                _valid_element_in_hash_tbl / 
arg.hash_table->get_factor() + 1));
                     }
 
                     arg.init_iterator();
diff --git a/be/src/vec/exprs/table_function/vexplode_json_array.cpp 
b/be/src/vec/exprs/table_function/vexplode_json_array.cpp
index 1a149d949af..fbff29390e9 100644
--- a/be/src/vec/exprs/table_function/vexplode_json_array.cpp
+++ b/be/src/vec/exprs/table_function/vexplode_json_array.cpp
@@ -66,7 +66,7 @@ int ParsedData::set_output(ExplodeJsonArrayType type, 
rapidjson::Document& docum
                 } else if (value < min_value) {
                     _backup_int[i] = min_value;
                 } else {
-                    _backup_int[i] = value;
+                    _backup_int[i] = long(value);
                 }
                 _data[i] = &_backup_int[i];
             } else {
diff --git a/be/src/vec/functions/array/function_array_join.h 
b/be/src/vec/functions/array/function_array_join.h
index 583738e4319..d184765edf6 100644
--- a/be/src/vec/functions/array/function_array_join.h
+++ b/be/src/vec/functions/array/function_array_join.h
@@ -147,7 +147,7 @@ private:
 
                 if (is_decimal) {
                     DecimalV2Value decimal_value =
-                            (DecimalV2Value)(src_data_concrete->get_data()[j]);
+                            
(DecimalV2Value)(int128_t(src_data_concrete->get_data()[j]));
                     std::string decimal_str = decimal_value.to_string();
                     _fill_result_string(decimal_str, sep_str, result_str, 
is_first_elem);
                 } else {
diff --git a/be/src/vec/functions/function_cast.h 
b/be/src/vec/functions/function_cast.h
index 79762af86ce..22022925f8d 100644
--- a/be/src/vec/functions/function_cast.h
+++ b/be/src/vec/functions/function_cast.h
@@ -216,12 +216,12 @@ struct TimeCast {
     template <typename T, typename S>
     //requires {std::is_arithmetic_v<T> && std::is_arithmetic_v<S>}
     static bool try_parse_time(T from, S& x, const cctz::time_zone& 
local_time_zone) {
-        int64 seconds = from / 100;
+        int64 seconds = int64(from / 100);
         int64 hour = 0, minute = 0, second = 0;
-        second = from - 100 * seconds;
+        second = int64(from - 100 * seconds);
         from /= 100;
-        seconds = from / 100;
-        minute = from - 100 * seconds;
+        seconds = int64(from / 100);
+        minute = int64(from - 100 * seconds);
         hour = seconds;
         if (minute >= 60 || second >= 60) {
             return false;
@@ -388,7 +388,7 @@ struct ConvertImpl {
                             DataTypeDateTimeV2::cast_to_date_v2(vec_from[i], 
vec_to[i]);
                         } else {
                             UInt32 scale = additions;
-                            vec_to[i] = vec_from[i] / std::pow(10, 6 - scale);
+                            vec_to[i] = ToFieldType(vec_from[i] / std::pow(10, 
6 - scale));
                         }
                     } else if constexpr (IsTimeType<ToDataType>) {
                         if constexpr (IsDateTimeType<ToDataType> && 
IsDateV2Type<FromDataType>) {
@@ -515,7 +515,7 @@ struct ConvertImplToTimeType {
                     [&](auto narrow_integral) {
                         for (size_t i = 0; i < size; ++i) {
                             auto& date_value = 
reinterpret_cast<DateValueType&>(vec_to[i]);
-                            vec_null_map_to[i] = 
!date_value.from_date_int64(vec_from[i]);
+                            vec_null_map_to[i] = 
!date_value.from_date_int64(int64_t(vec_from[i]));
                             // DateType of VecDateTimeValue should cast to date
                             if constexpr (IsDateType<ToDataType>) {
                                 date_value.cast_to_date();
diff --git a/be/src/vec/functions/function_quantile_state.cpp 
b/be/src/vec/functions/function_quantile_state.cpp
index 1d9afc209a3..524909314dc 100644
--- a/be/src/vec/functions/function_quantile_state.cpp
+++ b/be/src/vec/functions/function_quantile_state.cpp
@@ -134,7 +134,7 @@ public:
         float compression = 2048;
         if (compression_arg) {
             auto compression_arg_val = compression_arg->get_value<Float32>();
-            if (compression_arg_val && compression_arg_val >= 
QUANTILE_STATE_COMPRESSION_MIN &&
+            if (compression_arg_val >= QUANTILE_STATE_COMPRESSION_MIN &&
                 compression_arg_val <= QUANTILE_STATE_COMPRESSION_MAX) {
                 compression = compression_arg_val;
             }
diff --git a/be/src/vec/functions/int_div.h b/be/src/vec/functions/int_div.h
index 605d6d8339a..91952a3db25 100644
--- a/be/src/vec/functions/int_div.h
+++ b/be/src/vec/functions/int_div.h
@@ -45,13 +45,13 @@ struct DivideIntegralImpl {
         if (!is_null) {
             if constexpr (!std::is_floating_point_v<A> && !std::is_same_v<A, 
Int128> &&
                           !std::is_same_v<A, Int8> && !std::is_same_v<A, 
UInt8>) {
-                const auto divider = libdivide::divider<A>(b);
+                const auto divider = libdivide::divider<A>(A(b));
                 for (size_t i = 0; i < size; i++) {
                     c[i] = a[i] / divider;
                 }
             } else {
                 for (size_t i = 0; i < size; i++) {
-                    c[i] = a[i] / b;
+                    c[i] = Result(a[i] / b);
                 }
             }
         }
@@ -60,7 +60,7 @@ struct DivideIntegralImpl {
     template <typename Result = ResultType>
     static inline Result apply(A a, B b, UInt8& is_null) {
         is_null = b == 0;
-        return a / (b + is_null);
+        return Result(a / (b + is_null));
     }
 };
 
diff --git a/be/src/vec/sink/writer/vtablet_writer.cpp 
b/be/src/vec/sink/writer/vtablet_writer.cpp
index ce53029731a..cf6dc0b70ed 100644
--- a/be/src/vec/sink/writer/vtablet_writer.cpp
+++ b/be/src/vec/sink/writer/vtablet_writer.cpp
@@ -980,10 +980,10 @@ void VTabletWriter::_send_batch_process() {
     SCOPED_ATTACH_TASK(_state);
     SCOPED_CONSUME_MEM_TRACKER(_mem_tracker);
 
-    int sleep_time = config::olap_table_sink_send_interval_microseconds *
-                     (_vpartition->is_auto_partition()
-                              ? 
config::olap_table_sink_send_interval_auto_partition_factor
-                              : 1);
+    int sleep_time = int(config::olap_table_sink_send_interval_microseconds *
+                         (_vpartition->is_auto_partition()
+                                  ? 
config::olap_table_sink_send_interval_auto_partition_factor
+                                  : 1));
 
     while (true) {
         // incremental open will temporarily make channels into abnormal 
state. stop checking when this.
diff --git a/be/test/olap/wal/wal_manager_test.cpp 
b/be/test/olap/wal/wal_manager_test.cpp
index 2dc59cec9d9..afb4c7696ef 100644
--- a/be/test/olap/wal/wal_manager_test.cpp
+++ b/be/test/olap/wal/wal_manager_test.cpp
@@ -171,13 +171,13 @@ TEST_F(WalManagerTest, TestDynamicWalSpaceLimt) {
     _env->wal_mgr()->wal_limit_test_bytes = available_bytes;
     config::group_commit_wal_max_disk_limit = "5%";
     EXPECT_EQ(_env->wal_mgr()->_init_wal_dirs_info(), Status::OK());
-    wal_limit_bytes = available_bytes * 0.05;
+    wal_limit_bytes = size_t(available_bytes * 0.05);
     EXPECT_EQ(_env->wal_mgr()->wal_limit_test_bytes, wal_limit_bytes);
 
     _env->wal_mgr()->wal_limit_test_bytes = available_bytes;
     config::group_commit_wal_max_disk_limit = "50%";
     EXPECT_EQ(_env->wal_mgr()->_init_wal_dirs_info(), Status::OK());
-    wal_limit_bytes = available_bytes * 0.5;
+    wal_limit_bytes = size_t(available_bytes * 0.5);
     EXPECT_EQ(_env->wal_mgr()->wal_limit_test_bytes, wal_limit_bytes);
 
     _env->wal_mgr()->wal_limit_test_bytes = available_bytes;
diff --git a/be/test/vec/core/block_spill_test.cpp 
b/be/test/vec/core/block_spill_test.cpp
index 45156dee48c..af30479e10a 100644
--- a/be/test/vec/core/block_spill_test.cpp
+++ b/be/test/vec/core/block_spill_test.cpp
@@ -336,7 +336,7 @@ TEST_F(TestBlockSpill, TestDecimal) {
                                   decimal_column.get())
                                  ->get_data();
     for (int i = 0; i < total_rows; ++i) {
-        __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+        __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
         decimal_data.push_back(value);
     }
     vectorized::ColumnWithTypeAndName test_decimal(decimal_column->get_ptr(), 
decimal_data_type,
@@ -365,7 +365,7 @@ TEST_F(TestBlockSpill, TestDecimal) {
         auto* real_column =
                 
(vectorized::ColumnDecimal<vectorized::Decimal<vectorized::Int128>>*)column.get();
         for (size_t j = 0; j < batch_size; ++j) {
-            __int128_t value = (j + i * batch_size) * (pow(10, 9) + pow(10, 
8));
+            __int128_t value = __int128_t((j + i * batch_size) * (pow(10, 9) + 
pow(10, 8)));
             EXPECT_EQ(real_column->get_element(j).value, value);
         }
     }
@@ -392,7 +392,7 @@ TEST_F(TestBlockSpill, TestDecimalNullable) {
         if ((i + 1) % batch_size == 0) {
             nullable_col->insert_data(nullptr, 0);
         } else {
-            __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+            __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
             nullable_col->insert_data((const char*)&value, sizeof(value));
         }
     }
@@ -427,7 +427,7 @@ TEST_F(TestBlockSpill, TestDecimalNullable) {
             if ((j + 1) % batch_size == 0) {
                 ASSERT_TRUE(real_column->is_null_at(j));
             } else {
-                __int128_t value = (j + i * batch_size) * (pow(10, 9) + 
pow(10, 8));
+                __int128_t value = __int128_t((j + i * batch_size) * (pow(10, 
9) + pow(10, 8)));
                 EXPECT_EQ(decimal_col.get_element(j).value, value);
             }
         }
diff --git a/be/test/vec/core/block_test.cpp b/be/test/vec/core/block_test.cpp
index 4b2ae60fdf7..db770ef29da 100644
--- a/be/test/vec/core/block_test.cpp
+++ b/be/test/vec/core/block_test.cpp
@@ -165,7 +165,7 @@ void 
serialize_and_deserialize_test(segment_v2::CompressionTypePB compression_ty
                               decimal_column.get())
                              ->get_data();
         for (int i = 0; i < 1024; ++i) {
-            __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+            __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
             data.push_back(value);
         }
         vectorized::ColumnWithTypeAndName 
type_and_name(decimal_column->get_ptr(),
@@ -322,7 +322,7 @@ TEST(BlockTest, dump_data) {
                                   decimal_column.get())
                                  ->get_data();
     for (int i = 0; i < 1024; ++i) {
-        __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+        __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
         decimal_data.push_back(value);
     }
     vectorized::ColumnWithTypeAndName test_decimal(decimal_column->get_ptr(), 
decimal_data_type,
diff --git a/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp 
b/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp
index bce3e419775..4793ae8128a 100644
--- a/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp
@@ -244,7 +244,7 @@ void serialize_and_deserialize_arrow_test() {
                                       decimal_column.get())
                                      ->get_data();
                 for (int i = 0; i < row_num; ++i) {
-                    __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+                    __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 
8));
                     data.push_back(value);
                 }
                 vectorized::ColumnWithTypeAndName 
type_and_name(decimal_column->get_ptr(),
diff --git a/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp 
b/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp
index 420687329bd..35c169da7aa 100644
--- a/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp
@@ -158,7 +158,7 @@ void serialize_and_deserialize_mysql_test() {
                                       decimal_column.get())
                                      ->get_data();
                 for (int i = 0; i < row_num; ++i) {
-                    __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+                    auto value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
                     data.push_back(value);
                 }
                 vectorized::ColumnWithTypeAndName 
type_and_name(decimal_column->get_ptr(),
diff --git a/be/test/vec/data_types/serde/data_type_serde_pb_test.cpp 
b/be/test/vec/data_types/serde/data_type_serde_pb_test.cpp
index 78cd4649998..beda6c88a9c 100644
--- a/be/test/vec/data_types/serde/data_type_serde_pb_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_pb_test.cpp
@@ -109,7 +109,7 @@ inline void serialize_and_deserialize_pb_test() {
                               decimal_column.get())
                              ->get_data();
         for (int i = 0; i < 1024; ++i) {
-            __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+            __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
             data.push_back(value);
         }
         check_pb_col(decimal_data_type, *decimal_column.get());
diff --git a/be/test/vec/data_types/serde/data_type_serde_test.cpp 
b/be/test/vec/data_types/serde/data_type_serde_test.cpp
index ea1626790a3..ef235254db5 100644
--- a/be/test/vec/data_types/serde/data_type_serde_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_test.cpp
@@ -107,7 +107,7 @@ inline void serialize_and_deserialize_pb_test() {
                               decimal_column.get())
                              ->get_data();
         for (int i = 0; i < 1024; ++i) {
-            __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+            __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
             data.push_back(value);
         }
         check_pb_col(decimal_data_type, *decimal_column.get());
diff --git a/be/test/vec/jsonb/serialize_test.cpp 
b/be/test/vec/jsonb/serialize_test.cpp
index bfbf5620e08..04eb96dce62 100644
--- a/be/test/vec/jsonb/serialize_test.cpp
+++ b/be/test/vec/jsonb/serialize_test.cpp
@@ -385,7 +385,7 @@ TEST(BlockSerializeTest, JsonbBlock) {
                               decimal_column.get())
                              ->get_data();
         for (int i = 0; i < 1024; ++i) {
-            __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+            __int128_t value = __int128_t(i * pow(10, 9) + i * pow(10, 8));
             data.push_back(value);
         }
         vectorized::ColumnWithTypeAndName 
type_and_name(decimal_column->get_ptr(),


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to