Skip to content

Commit

Permalink
[chore](static-check) Add some cast checks for files under dir be/src…
Browse files Browse the repository at this point in the history
…/olap/ (#44398)

### What problem does this PR solve?

Issue Number: related #44400
  • Loading branch information
TangSiyang2001 authored Nov 23, 2024
1 parent 31d51d1 commit 362efda
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 16 deletions.
12 changes: 12 additions & 0 deletions be/src/common/cast_set.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ void cast_set(T& a, U b) {
a = static_cast<T>(b);
}

template <typename T, typename U>
requires std::is_floating_point_v<T> and std::is_integral_v<U>
void cast_set(T& a, U b) {
a = static_cast<T>(b);
}

template <typename T, typename U, bool need_check_value = true>
requires std::is_integral_v<T> && std::is_integral_v<U>
T cast_set(U b) {
Expand All @@ -70,4 +76,10 @@ T cast_set(U b) {
return static_cast<T>(b);
}

template <typename T, typename U>
requires std::is_floating_point_v<T> and std::is_integral_v<U>
T cast_set(U b) {
return static_cast<T>(b);
}

} // namespace doris
4 changes: 2 additions & 2 deletions be/src/http/action/calc_file_crc_action.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ CalcFileCrcAction::CalcFileCrcAction(ExecEnv* exec_env, BaseStorageEngine& engin
// calculate the crc value of the files in the tablet
Status CalcFileCrcAction::_handle_calc_crc(HttpRequest* req, uint32_t* crc_value,
int64_t* start_version, int64_t* end_version,
int32_t* rowset_count, int64_t* file_count) {
uint32_t* rowset_count, int64_t* file_count) {
uint64_t tablet_id = 0;
const auto& req_tablet_id = req->param(TABLET_ID_KEY);
if (req_tablet_id.empty()) {
Expand Down Expand Up @@ -110,7 +110,7 @@ void CalcFileCrcAction::handle(HttpRequest* req) {
uint32_t crc_value = 0;
int64_t start_version = 0;
int64_t end_version = 0;
int32_t rowset_count = 0;
uint32_t rowset_count = 0;
int64_t file_count = 0;

MonotonicStopWatch timer;
Expand Down
2 changes: 1 addition & 1 deletion be/src/http/action/calc_file_crc_action.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class CalcFileCrcAction : public HttpHandlerWithAuth {

private:
Status _handle_calc_crc(HttpRequest* req, uint32_t* crc_value, int64_t* start_version,
int64_t* end_version, int32_t* rowset_count, int64_t* file_count);
int64_t* end_version, uint32_t* rowset_count, int64_t* file_count);

private:
BaseStorageEngine& _engine;
Expand Down
6 changes: 5 additions & 1 deletion be/src/olap/base_compaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <mutex>
#include <ostream>

#include "common/cast_set.h"
#include "common/config.h"
#include "common/logging.h"
#include "olap/compaction.h"
Expand All @@ -35,6 +36,8 @@
#include "util/trace.h"

namespace doris {
#include "common/compile_check_begin.h"

using namespace ErrorCode;

BaseCompaction::BaseCompaction(StorageEngine& engine, const TabletSharedPtr& tablet)
Expand Down Expand Up @@ -184,7 +187,8 @@ Status BaseCompaction::pick_rowsets_to_compact() {
// set to 1 to void divide by zero
base_size = 1;
}
double cumulative_base_ratio = static_cast<double>(cumulative_total_size) / base_size;
double cumulative_base_ratio =
cast_set<double>(cumulative_total_size) / cast_set<double>(base_size);

if (cumulative_base_ratio > min_data_ratio) {
VLOG_NOTICE << "satisfy the base compaction policy. tablet=" << _tablet->tablet_id()
Expand Down
32 changes: 21 additions & 11 deletions be/src/olap/base_tablet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
#include <fmt/format.h>
#include <rapidjson/prettywriter.h>

#include <cstdint>
#include <iterator>

#include "common/cast_set.h"
#include "common/logging.h"
#include "common/status.h"
#include "olap/calc_delete_bitmap_executor.h"
Expand All @@ -45,6 +49,8 @@
#include "vec/jsonb/serialize.h"

namespace doris {
#include "common/compile_check_begin.h"

using namespace ErrorCode;

namespace {
Expand Down Expand Up @@ -462,9 +468,9 @@ Status BaseTablet::lookup_row_key(const Slice& encoded_key, TabletSchema* latest
RowLocation loc;

for (size_t i = 0; i < specified_rowsets.size(); i++) {
auto& rs = specified_rowsets[i];
auto& segments_key_bounds = rs->rowset_meta()->get_segments_key_bounds();
int num_segments = rs->num_segments();
const auto& rs = specified_rowsets[i];
const auto& segments_key_bounds = rs->rowset_meta()->get_segments_key_bounds();
int num_segments = cast_set<int>(rs->num_segments());
DCHECK_EQ(segments_key_bounds.size(), num_segments);
std::vector<uint32_t> picked_segments;
for (int i = num_segments - 1; i >= 0; i--) {
Expand Down Expand Up @@ -671,7 +677,8 @@ Status BaseTablet::calc_segment_delete_bitmap(RowsetSharedPtr rowset,

RowsetSharedPtr rowset_find;
auto st = lookup_row_key(key, rowset_schema.get(), true, specified_rowsets, &loc,
dummy_version.first - 1, segment_caches, &rowset_find);
cast_set<uint32_t>(dummy_version.first - 1), segment_caches,
&rowset_find);
bool expected_st = st.ok() || st.is<KEY_NOT_FOUND>() || st.is<KEY_ALREADY_EXISTS>();
// It's a defensive DCHECK, we need to exclude some common errors to avoid core-dump
// while stress test
Expand Down Expand Up @@ -1130,7 +1137,7 @@ Status BaseTablet::generate_new_block_for_flexible_partial_update(
const signed char* delete_sign_column_data) {
if (skipped) {
if (delete_sign_column_data != nullptr &&
delete_sign_column_data[read_index_old[idx]] != 0) {
delete_sign_column_data[read_index_old[cast_set<uint32_t>(idx)]] != 0) {
if (tablet_column.has_default_value()) {
new_col->insert_from(default_value_col, 0);
} else if (tablet_column.is_nullable()) {
Expand Down Expand Up @@ -1300,7 +1307,8 @@ Status BaseTablet::check_delete_bitmap_correctness(DeleteBitmapPtr delete_bitmap
for (const auto& rowset : *rowsets) {
rapidjson::Value value;
std::string version_str = rowset->get_rowset_info_str();
value.SetString(version_str.c_str(), version_str.length(),
value.SetString(version_str.c_str(),
cast_set<rapidjson::SizeType>(version_str.length()),
required_rowsets_arr.GetAllocator());
required_rowsets_arr.PushBack(value, required_rowsets_arr.GetAllocator());
}
Expand All @@ -1313,15 +1321,17 @@ Status BaseTablet::check_delete_bitmap_correctness(DeleteBitmapPtr delete_bitmap
for (const auto& rowset : rowsets) {
rapidjson::Value value;
std::string version_str = rowset->get_rowset_info_str();
value.SetString(version_str.c_str(), version_str.length(),
value.SetString(version_str.c_str(),
cast_set<rapidjson::SizeType>(version_str.length()),
required_rowsets_arr.GetAllocator());
required_rowsets_arr.PushBack(value, required_rowsets_arr.GetAllocator());
}
}
for (const auto& missing_rowset_id : missing_ids) {
rapidjson::Value miss_value;
std::string rowset_id_str = missing_rowset_id.to_string();
miss_value.SetString(rowset_id_str.c_str(), rowset_id_str.length(),
miss_value.SetString(rowset_id_str.c_str(),
cast_set<rapidjson::SizeType>(rowset_id_str.length()),
missing_rowsets_arr.GetAllocator());
missing_rowsets_arr.PushBack(miss_value, missing_rowsets_arr.GetAllocator());
}
Expand Down Expand Up @@ -1725,7 +1735,7 @@ std::vector<RowsetSharedPtr> BaseTablet::get_snapshot_rowset(bool include_stale_
void BaseTablet::calc_consecutive_empty_rowsets(
std::vector<RowsetSharedPtr>* empty_rowsets,
const std::vector<RowsetSharedPtr>& candidate_rowsets, int limit) {
int len = candidate_rowsets.size();
int len = cast_set<int>(candidate_rowsets.size());
for (int i = 0; i < len - 1; ++i) {
auto rowset = candidate_rowsets[i];
auto next_rowset = candidate_rowsets[i + 1];
Expand Down Expand Up @@ -1761,7 +1771,7 @@ void BaseTablet::calc_consecutive_empty_rowsets(
}

Status BaseTablet::calc_file_crc(uint32_t* crc_value, int64_t start_version, int64_t end_version,
int32_t* rowset_count, int64_t* file_count) {
uint32_t* rowset_count, int64_t* file_count) {
Version v(start_version, end_version);
std::vector<RowsetSharedPtr> rowsets;
traverse_rowsets([&rowsets, &v](const auto& rs) {
Expand All @@ -1771,7 +1781,7 @@ Status BaseTablet::calc_file_crc(uint32_t* crc_value, int64_t start_version, int
}
});
std::sort(rowsets.begin(), rowsets.end(), Rowset::comparator);
*rowset_count = rowsets.size();
*rowset_count = cast_set<uint32_t>(rowsets.size());

*crc_value = 0;
*file_count = 0;
Expand Down
2 changes: 1 addition & 1 deletion be/src/olap/base_tablet.h
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ class BaseTablet {
}

Status calc_file_crc(uint32_t* crc_value, int64_t start_version, int64_t end_version,
int32_t* rowset_count, int64_t* file_count);
uint32_t* rowset_count, int64_t* file_count);

Status show_nested_index_file(std::string* json_meta);

Expand Down

0 comments on commit 362efda

Please sign in to comment.