This is an automated email from the ASF dual-hosted git repository.
yiguolei 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 962aa6ea745 [refine](be) Remove redundant column pointer conversions
(#68933)
962aa6ea745 is described below
commit 962aa6ea74510f91bcbbeab1cac8617c3ac5da1a
Author: Mryange <[email protected]>
AuthorDate: Tue Oct 13 11:03:39 2026 +0800
[refine](be) Remove redundant column pointer conversions (#68933)
### What problem does this PR solve?
Several BE paths converted an existing column pointer to a new intrusive
pointer and immediately extracted the raw pointer with
`get_ptr().get()`. These conversions do not copy column data, but
obscure ownership and add unnecessary pointer operations.
This change uses existing `ColumnPtr` values or direct borrowed
references where the parent column already guarantees lifetime. JSON
readers keep explicit `MutableColumnPtr` owners while passing mutable
raw pointers to synchronous deserialization calls.
Related PR: #68880
### Release note
None
### Check List (For Author)
- Test: No build or tests run; source-only pointer ownership cleanup
- Behavior changed: No
- Does this need documentation: No
---
be/src/exprs/aggregate/aggregate_function_regr.h | 2 +-
be/src/exprs/function/function_bit.cpp | 4 ++--
be/src/exprs/function/function_bit_shift.cpp | 5 ++---
be/src/exprs/function/math.cpp | 5 ++---
be/src/exprs/table_function/vexplode_v2.cpp | 4 ++--
be/src/format/json/new_json_reader.cpp | 15 +++++++--------
be/src/format_v2/json/json_reader.cpp | 16 ++++++++--------
be/src/storage/tablet/base_tablet.cpp | 2 +-
8 files changed, 25 insertions(+), 28 deletions(-)
diff --git a/be/src/exprs/aggregate/aggregate_function_regr.h
b/be/src/exprs/aggregate/aggregate_function_regr.h
index 0edec8334f9..5f333951dde 100644
--- a/be/src/exprs/aggregate/aggregate_function_regr.h
+++ b/be/src/exprs/aggregate/aggregate_function_regr.h
@@ -471,7 +471,7 @@ private:
return assert_cast<const InputCol*, TypeCheckOnRelease::DISABLE>(
nullable_column.get_nested_column_ptr().get());
} else {
- return assert_cast<const InputCol*,
TypeCheckOnRelease::DISABLE>(col->get_ptr().get());
+ return assert_cast<const InputCol*,
TypeCheckOnRelease::DISABLE>(col);
}
}
};
diff --git a/be/src/exprs/function/function_bit.cpp
b/be/src/exprs/function/function_bit.cpp
index 9b0ab7c229e..0f09dd393f9 100644
--- a/be/src/exprs/function/function_bit.cpp
+++ b/be/src/exprs/function/function_bit.cpp
@@ -126,9 +126,9 @@ private:
ColumnPtr vector_vector(ColumnPtr column_left, ColumnPtr column_right)
const {
const auto* column_left_ptr =
- assert_cast<const typename
Impl::ColumnType*>(column_left->get_ptr().get());
+ assert_cast<const typename
Impl::ColumnType*>(column_left.get());
const auto* column_right_ptr =
- assert_cast<const typename
Impl::ColumnType*>(column_right->get_ptr().get());
+ assert_cast<const typename
Impl::ColumnType*>(column_right.get());
auto column_result = Impl::ColumnType::create(column_left->size());
diff --git a/be/src/exprs/function/function_bit_shift.cpp
b/be/src/exprs/function/function_bit_shift.cpp
index 9e90992daa6..e43b56e22be 100644
--- a/be/src/exprs/function/function_bit_shift.cpp
+++ b/be/src/exprs/function/function_bit_shift.cpp
@@ -111,9 +111,8 @@ private:
}
ColumnPtr vector_vector(ColumnPtr column_left, ColumnPtr column_right)
const {
- const auto* column_left_ptr = assert_cast<const
ColumnInt64*>(column_left->get_ptr().get());
- const auto* column_right_ptr =
- assert_cast<const ColumnInt8*>(column_right->get_ptr().get());
+ const auto* column_left_ptr = assert_cast<const
ColumnInt64*>(column_left.get());
+ const auto* column_right_ptr = assert_cast<const
ColumnInt8*>(column_right.get());
auto column_result = ColumnInt64::create(column_left->size());
diff --git a/be/src/exprs/function/math.cpp b/be/src/exprs/function/math.cpp
index 8bd849549ca..7fefaa1a7c4 100644
--- a/be/src/exprs/function/math.cpp
+++ b/be/src/exprs/function/math.cpp
@@ -701,9 +701,8 @@ private:
}
ColumnPtr vector_vector(ColumnPtr column_left, ColumnPtr column_right)
const {
- const auto* column_left_ptr = assert_cast<const
column_type*>(column_left->get_ptr().get());
- const auto* column_right_ptr =
- assert_cast<const column_type*>(column_right->get_ptr().get());
+ const auto* column_left_ptr = assert_cast<const
column_type*>(column_left.get());
+ const auto* column_right_ptr = assert_cast<const
column_type*>(column_right.get());
auto column_result = column_type::create(column_left->size());
diff --git a/be/src/exprs/table_function/vexplode_v2.cpp
b/be/src/exprs/table_function/vexplode_v2.cpp
index f5011e67486..5025ec546df 100644
--- a/be/src/exprs/table_function/vexplode_v2.cpp
+++ b/be/src/exprs/table_function/vexplode_v2.cpp
@@ -232,7 +232,7 @@ void
VExplodeV2TableFunction::get_same_many_values(MutableColumnPtr& column, int
if ((detail.array_nullmap_data &&
detail.array_nullmap_data[_row_idx])) {
struct_field.insert_many_defaults(length);
} else {
- auto* nullable_column =
assert_cast<ColumnNullable*>(struct_field.get_ptr().get());
+ auto* nullable_column =
assert_cast<ColumnNullable*>(&struct_field);
auto* nullmap_column =
nullable_column->get_null_map_column_ptr().get();
// only need to check if the value at position pos is null
if (element_size < _cur_offset ||
@@ -292,7 +292,7 @@ int VExplodeV2TableFunction::get_value(MutableColumnPtr&
column, int max_step) {
if (detail.array_nullmap_data &&
detail.array_nullmap_data[_row_idx]) {
struct_field.insert_many_defaults(max_step);
} else {
- auto* nullable_column =
assert_cast<ColumnNullable*>(struct_field.get_ptr().get());
+ auto* nullable_column =
assert_cast<ColumnNullable*>(&struct_field);
auto* nullmap_column =
nullable_column->get_null_map_column_ptr().get();
if (element_size >= _cur_offset + max_step) {
nullable_column->get_nested_column_ptr()->insert_range_from(*detail.nested_col,
diff --git a/be/src/format/json/new_json_reader.cpp
b/be/src/format/json/new_json_reader.cpp
index 33d17efdf9b..add8f9f6f04 100644
--- a/be/src/format/json/new_json_reader.cpp
+++ b/be/src/format/json/new_json_reader.cpp
@@ -1125,7 +1125,7 @@ Status
NewJsonReader::_simdjson_write_data_to_column(simdjson::ondemand::value&
if (is_column_nullable(*column_ptr)) {
nullable_column = reinterpret_cast<ColumnNullable*>(column_ptr);
- data_column_ptr = nullable_column->get_nested_column().get_ptr().get();
+ data_column_ptr = &nullable_column->get_nested_column();
data_serde = serde->get_nested_serdes()[0];
// kNullType will put 1 into the Null map, so there is no need to push
0 for kNullType.
@@ -1265,7 +1265,7 @@ Status
NewJsonReader::_simdjson_write_data_to_column(simdjson::ondemand::value&
auto* nullable_column =
static_cast<ColumnNullable*>(column_ptr);
nullable_column->get_null_map_data().push_back(0);
- data_column_ptr =
nullable_column->get_nested_column().get_ptr().get();
+ data_column_ptr = &nullable_column->get_nested_column();
data_serde = serde->get_nested_serdes()[0];
}
Slice slice(key_view.data(), key_view.length());
@@ -1275,19 +1275,19 @@ Status
NewJsonReader::_simdjson_write_data_to_column(simdjson::ondemand::value&
return Status::OK();
};
+ auto mutable_keys =
map_column_ptr->get_keys_ptr()->assert_mutable();
RETURN_IF_ERROR(f(member_value.unescaped_key(),
assert_cast<const
DataTypeMap*>(remove_nullable(type_desc).get())
->get_key_type(),
-
map_column_ptr->get_keys_ptr()->assert_mutable()->get_ptr().get(),
- sub_serdes[0], _serde_options, valid));
+ mutable_keys.get(), sub_serdes[0],
_serde_options, valid));
simdjson::ondemand::value field_value = member_value.value();
+ auto mutable_values =
map_column_ptr->get_values_ptr()->assert_mutable();
RETURN_IF_ERROR(_simdjson_write_data_to_column<use_string_cache>(
field_value,
assert_cast<const
DataTypeMap*>(remove_nullable(type_desc).get())
->get_value_type(),
-
map_column_ptr->get_values_ptr()->assert_mutable()->get_ptr().get(),
- column_name + ".value", sub_serdes[1], valid));
+ mutable_values.get(), column_name + ".value",
sub_serdes[1], valid));
field_count++;
}
@@ -1311,8 +1311,7 @@ Status
NewJsonReader::_simdjson_write_data_to_column(simdjson::ondemand::value&
sub_value,
assert_cast<const
DataTypeArray*>(remove_nullable(type_desc).get())
->get_nested_type(),
- array_column_ptr->get_data().get_ptr().get(), column_name
+ ".element",
- sub_serdes[0], valid));
+ &array_column_ptr->get_data(), column_name + ".element",
sub_serdes[0], valid));
field_count++;
}
auto& offsets = array_column_ptr->get_offsets();
diff --git a/be/src/format_v2/json/json_reader.cpp
b/be/src/format_v2/json/json_reader.cpp
index 78601f90584..10e53abffab 100644
--- a/be/src/format_v2/json/json_reader.cpp
+++ b/be/src/format_v2/json/json_reader.cpp
@@ -904,7 +904,7 @@ Status
JsonReader::_write_data_to_column(simdjson::ondemand::value& value,
if (is_column_nullable(*column_ptr)) {
nullable_column = assert_cast<ColumnNullable*>(column_ptr);
- data_column_ptr = nullable_column->get_nested_column().get_ptr().get();
+ data_column_ptr = &nullable_column->get_nested_column();
if (type_desc->is_nullable()) {
data_serde = serde->get_nested_serdes()[0];
}
@@ -1007,12 +1007,13 @@ Status
JsonReader::_write_data_to_column(simdjson::ondemand::value& value,
size_t field_count = 0;
simdjson::ondemand::object object_value = value.get_object();
for (auto member_value : object_value) {
- auto* key_column =
map_column_ptr->get_keys_ptr()->assert_mutable()->get_ptr().get();
+ auto mutable_keys =
map_column_ptr->get_keys_ptr()->assert_mutable();
+ auto* key_column = mutable_keys.get();
auto key_serde = sub_serdes[0];
if (is_column_nullable(*key_column)) {
auto* nullable_key = assert_cast<ColumnNullable*>(key_column);
nullable_key->get_null_map_data().push_back(0);
- key_column = nullable_key->get_nested_column().get_ptr().get();
+ key_column = &nullable_key->get_nested_column();
if (map_type->get_key_type()->is_nullable()) {
key_serde = key_serde->get_nested_serdes()[0];
}
@@ -1022,9 +1023,9 @@ Status
JsonReader::_write_data_to_column(simdjson::ondemand::value& value,
RETURN_IF_ERROR(key_serde->deserialize_one_cell_from_json(*key_column,
key_slice,
_serde_options));
simdjson::ondemand::value field_value =
member_value.value().value();
+ auto mutable_values =
map_column_ptr->get_values_ptr()->assert_mutable();
RETURN_IF_ERROR(_write_data_to_column<use_string_cache>(
- field_value, map_type->get_value_type(),
-
map_column_ptr->get_values_ptr()->assert_mutable()->get_ptr().get(),
+ field_value, map_type->get_value_type(),
mutable_values.get(),
column_name + ".value", sub_serdes[1], valid));
++field_count;
}
@@ -1043,9 +1044,8 @@ Status
JsonReader::_write_data_to_column(simdjson::ondemand::value& value,
simdjson::ondemand::array array_value = value.get_array();
for (simdjson::ondemand::value sub_value : array_value) {
RETURN_IF_ERROR(_write_data_to_column<use_string_cache>(
- sub_value, array_type->get_nested_type(),
- array_column_ptr->get_data().get_ptr().get(), column_name
+ ".element",
- sub_serdes[0], valid));
+ sub_value, array_type->get_nested_type(),
&array_column_ptr->get_data(),
+ column_name + ".element", sub_serdes[0], valid));
++field_count;
}
auto& offsets = array_column_ptr->get_offsets();
diff --git a/be/src/storage/tablet/base_tablet.cpp
b/be/src/storage/tablet/base_tablet.cpp
index 597fb167f68..8ece0c8e657 100644
--- a/be/src/storage/tablet/base_tablet.cpp
+++ b/be/src/storage/tablet/base_tablet.cpp
@@ -1456,7 +1456,7 @@ Status
BaseTablet::generate_new_block_for_flexible_partial_update(
auto skip_bitmap_col_idx = rowset_schema->skip_bitmap_col_idx();
const std::vector<BitmapValue>* skip_bitmaps =
&(assert_cast<const ColumnBitmap*, TypeCheckOnRelease::DISABLE>(
-
update_block.get_by_position(skip_bitmap_col_idx).column->get_ptr().get())
+
update_block.get_by_position(skip_bitmap_col_idx).column.get())
->get_data());
if (rowset_schema->has_sequence_col() && !rids_be_overwritten.empty()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]