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]

Reply via email to