This is an automated email from the ASF dual-hosted git repository.
Mryange 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 b82e18f23b4 [refine](column) replace misused check_and_get_column with
assert_cast (#63164)
b82e18f23b4 is described below
commit b82e18f23b4c6fba35d0f92a7c5bb388cda5b307
Author: Mryange <[email protected]>
AuthorDate: Thu May 14 10:59:48 2026 +0800
[refine](column) replace misused check_and_get_column with assert_cast
(#63164)
### What problem does this PR solve?
Issue Number: N/A
Problem Summary:
`check_and_get_column` returns nullptr when the column type doesn't
match, but many call sites either:
- used the result without null-checking, risking silent null
dereference, or
- wrapped it in an `if (ptr)` / `else { throw FatalError }` pattern,
which is exactly what `assert_cast` does — but with a clearer error
message.
Root cause: these call sites always expect a specific column type. The
type invariant is guaranteed by upstream logic, so a null-return path is
dead code that obscures the real contract.
Fix: replace `check_and_get_column<T>(column)` with `assert_cast<const
T*>(&column)`, which asserts the type match immediately. Also removed
the dead else-throw branches that became unreachable.
---
be/src/core/column/column_variant.cpp | 2 +-
.../core/data_type_serde/data_type_decimal_serde.h | 2 +-
.../core/data_type_serde/data_type_map_serde.cpp | 2 +-
.../data_type_serde/data_type_nullable_serde.cpp | 3 +-
.../core/data_type_serde/data_type_number_serde.h | 2 +-
.../data_type_serde/data_type_variant_serde.cpp | 6 ++--
be/src/core/decimal_comparison.h | 28 ++++++------------
be/src/exec/common/columns_hashing.h | 3 +-
be/src/exec/common/variant_util.cpp | 2 +-
be/src/exec/operator/join_probe_operator.cpp | 3 +-
.../sink/writer/iceberg/partition_transformers.h | 2 +-
.../sink/writer/iceberg/viceberg_table_writer.cpp | 2 +-
be/src/exec/sink/writer/vhive_table_writer.cpp | 2 +-
.../function/array/function_array_aggregation.cpp | 4 +--
.../exprs/function/array/function_array_apply.cpp | 2 +-
.../exprs/function/array/function_array_concat.cpp | 4 +--
.../function/array/function_array_cum_sum.cpp | 3 +-
.../exprs/function/array/function_array_distinct.h | 2 +-
.../exprs/function/array/function_array_element.h | 2 +-
.../function/array/function_array_enumerate.cpp | 3 +-
.../array/function_array_enumerate_uniq.cpp | 5 ++--
.../exprs/function/array/function_array_mapped.h | 4 +--
be/src/exprs/function/cast/cast_base.cpp | 4 +--
be/src/exprs/function/cast/cast_base.h | 1 +
.../function/cast/cast_to_basic_number_common.h | 2 +-
be/src/exprs/function/cast/cast_to_boolean.h | 6 ++--
be/src/exprs/function/cast/cast_to_date.h | 6 ++--
be/src/exprs/function/cast/cast_to_decimal.h | 2 +-
be/src/exprs/function/cast/cast_to_ip.h | 4 +--
.../exprs/function/function_always_not_nullable.h | 10 +++----
be/src/exprs/function/function_collection_in.h | 4 +--
.../function_date_or_datetime_to_string.cpp | 4 +--
.../function/function_datetime_floor_ceil.cpp | 19 ++++++-------
be/src/exprs/function/function_hex.cpp | 6 ++--
be/src/exprs/function/function_hll.cpp | 6 ++--
be/src/exprs/function/function_jsonb.cpp | 7 ++---
.../exprs/function/function_needs_to_handle_null.h | 4 +--
be/src/exprs/function/function_quantile_state.cpp | 17 ++++-------
be/src/exprs/function/function_variant_element.cpp | 2 +-
.../function/functions_multi_string_position.cpp | 9 +++---
.../function/functions_multi_string_search.cpp | 2 +-
be/src/exprs/function/in.h | 2 +-
be/src/exprs/function/round.h | 6 ++--
be/src/storage/predicate/comparison_predicate.h | 33 +++++++++++-----------
be/src/storage/predicate/in_list_predicate.h | 10 +++----
be/src/storage/predicate/like_column_predicate.cpp | 11 ++++----
be/src/storage/predicate/like_column_predicate.h | 6 ++--
be/src/storage/schema_change/schema_change.cpp | 19 ++++++-------
be/src/storage/segment/column_reader.cpp | 14 ++++-----
be/src/storage/segment/segment_iterator.cpp | 7 ++---
.../segment/variant/hierarchical_data_iterator.cpp | 4 +--
be/test/core/column/column_array_test.cpp | 2 +-
be/test/core/value/merge_partitioner_test.cpp | 4 +--
53 files changed, 145 insertions(+), 176 deletions(-)
diff --git a/be/src/core/column/column_variant.cpp
b/be/src/core/column/column_variant.cpp
index dd9429c9ebf..2ab04c80b86 100644
--- a/be/src/core/column/column_variant.cpp
+++ b/be/src/core/column/column_variant.cpp
@@ -839,7 +839,7 @@ void ColumnVariant::for_each_subcolumn(ColumnCallback
callback) {
}
void ColumnVariant::insert_from(const IColumn& src, size_t n) {
- const auto* src_v = check_and_get_column<ColumnVariant>(src);
+ const auto* src_v = assert_cast<const ColumnVariant*>(&src);
ENABLE_CHECK_CONSISTENCY(src_v);
ENABLE_CHECK_CONSISTENCY(this);
// Preserve the original root-only copy path for ordinary variant columns.
diff --git a/be/src/core/data_type_serde/data_type_decimal_serde.h
b/be/src/core/data_type_serde/data_type_decimal_serde.h
index 153e58b2bc6..0185672e024 100644
--- a/be/src/core/data_type_serde/data_type_decimal_serde.h
+++ b/be/src/core/data_type_serde/data_type_decimal_serde.h
@@ -152,7 +152,7 @@ template <PrimitiveType T>
Status DataTypeDecimalSerDe<T>::write_column_to_pb(const IColumn& column,
PValues& result,
int64_t start, int64_t end)
const {
auto row_count = cast_set<int>(end - start);
- const auto* col = check_and_get_column<ColumnDecimal<T>>(column);
+ const auto* col = assert_cast<const ColumnDecimal<T>*>(&column);
auto* ptype = result.mutable_type();
if constexpr (T == TYPE_DECIMALV2) {
ptype->set_id(PGenericType::DECIMAL128);
diff --git a/be/src/core/data_type_serde/data_type_map_serde.cpp
b/be/src/core/data_type_serde/data_type_map_serde.cpp
index b9fa5594166..89a2b2955df 100644
--- a/be/src/core/data_type_serde/data_type_map_serde.cpp
+++ b/be/src/core/data_type_serde/data_type_map_serde.cpp
@@ -341,7 +341,7 @@ Status DataTypeMapSerDe::write_column_to_arrow(const
IColumn& column, const Null
DCHECK(nested_keys_column.is_nullable());
DCHECK(nested_values_column.is_nullable());
const auto* keys_nullmap_data =
-
check_and_get_column<ColumnNullable>(nested_keys_column)->get_null_map_data().data();
+ assert_cast<const
ColumnNullable&>(nested_keys_column).get_null_map_data().data();
const auto& offsets = map_column.get_offsets();
auto* key_builder = builder.key_builder();
auto* value_builder = builder.item_builder();
diff --git a/be/src/core/data_type_serde/data_type_nullable_serde.cpp
b/be/src/core/data_type_serde/data_type_nullable_serde.cpp
index c6cc8fcaa3f..a93f8d6126c 100644
--- a/be/src/core/data_type_serde/data_type_nullable_serde.cpp
+++ b/be/src/core/data_type_serde/data_type_nullable_serde.cpp
@@ -268,8 +268,7 @@ Status DataTypeNullableSerDe::write_column_to_pb(const
IColumn& column, PValues&
result.set_has_null(true);
auto* null_map = result.mutable_null_map();
null_map->Reserve(row_count);
- const auto* col = check_and_get_column<ColumnUInt8>(null_col);
- const auto& data = col->get_data();
+ const auto& data = null_col.get_data();
null_map->Add(data.begin() + start, data.begin() + end);
}
return nested_serde->write_column_to_pb(nullable_col.get_nested_column(),
result, start, end);
diff --git a/be/src/core/data_type_serde/data_type_number_serde.h
b/be/src/core/data_type_serde/data_type_number_serde.h
index 91b4543f64d..b57f9f9d212 100644
--- a/be/src/core/data_type_serde/data_type_number_serde.h
+++ b/be/src/core/data_type_serde/data_type_number_serde.h
@@ -239,7 +239,7 @@ Status DataTypeNumberSerDe<T>::write_column_to_pb(const
IColumn& column, PValues
int64_t start, int64_t end)
const {
auto row_count = cast_set<int>(end - start);
auto* ptype = result.mutable_type();
- const auto* col = check_and_get_column<ColumnType>(column);
+ const auto* col = assert_cast<const ColumnType*>(&column);
if constexpr (T == TYPE_LARGEINT) {
ptype->set_id(PGenericType::INT128);
result.mutable_bytes_value()->Reserve(row_count);
diff --git a/be/src/core/data_type_serde/data_type_variant_serde.cpp
b/be/src/core/data_type_serde/data_type_variant_serde.cpp
index 93ec3edfdfb..bb1f2b6c928 100644
--- a/be/src/core/data_type_serde/data_type_variant_serde.cpp
+++ b/be/src/core/data_type_serde/data_type_variant_serde.cpp
@@ -101,7 +101,7 @@ void
DataTypeVariantSerDe::read_one_cell_from_jsonb(IColumn& column, const Jsonb
Status DataTypeVariantSerDe::serialize_one_cell_to_json(const IColumn& column,
int64_t row_num,
BufferWritable& bw,
FormatOptions&
options) const {
- const auto* var = check_and_get_column<ColumnVariant>(column);
+ const auto* var = assert_cast<const ColumnVariant*>(&column);
var->serialize_one_row_to_string(row_num, bw, options);
return Status::OK();
}
@@ -127,7 +127,7 @@ Status DataTypeVariantSerDe::write_column_to_arrow(const
IColumn& column, const
arrow::ArrayBuilder*
array_builder,
int64_t start, int64_t end,
const cctz::time_zone& ctz)
const {
- const auto* var = check_and_get_column<ColumnVariant>(column);
+ const auto* var = assert_cast<const ColumnVariant*>(&column);
auto& builder = assert_cast<arrow::StringBuilder&>(*array_builder);
FormatOptions options;
options.timezone = &ctz;
@@ -158,7 +158,7 @@ Status DataTypeVariantSerDe::write_column_to_orc(const
std::string& timezone, co
orc::ColumnVectorBatch*
orc_col_batch,
int64_t start, int64_t end,
Arena& arena,
const FormatOptions& options)
const {
- const auto* var = check_and_get_column<ColumnVariant>(column);
+ const auto* var = assert_cast<const ColumnVariant*>(&column);
orc::StringVectorBatch* cur_batch =
dynamic_cast<orc::StringVectorBatch*>(orc_col_batch);
// First pass: calculate total memory needed and collect serialized values
std::vector<std::string> serialized_values;
diff --git a/be/src/core/decimal_comparison.h b/be/src/core/decimal_comparison.h
index db879c92802..651d51a8e11 100644
--- a/be/src/core/decimal_comparison.h
+++ b/be/src/core/decimal_comparison.h
@@ -217,30 +217,18 @@ private:
if (c0_is_const) {
const ColumnConst* c0_const =
check_and_get_column_const<ColVecA>(c0.get());
const auto& a = c0_const->template get_value<A>();
- if (const ColVecB* c1_vec =
check_and_get_column<ColVecB>(c1.get()))
- constant_vector<scale_left, scale_right>(a,
c1_vec->get_data(), vec_res, scale);
- else {
- throw Exception(Status::FatalError("Wrong column in
Decimal comparison"));
- }
+ const auto* c1_vec = assert_cast<const ColVecB*>(c1.get());
+ constant_vector<scale_left, scale_right>(a,
c1_vec->get_data(), vec_res, scale);
} else if (c1_is_const) {
const ColumnConst* c1_const =
check_and_get_column_const<ColVecB>(c1.get());
const auto& b = c1_const->template get_value<B>();
- if (const ColVecA* c0_vec =
check_and_get_column<ColVecA>(c0.get()))
- vector_constant<scale_left,
scale_right>(c0_vec->get_data(), b, vec_res, scale);
- else {
- throw Exception(Status::FatalError("Wrong column in
Decimal comparison"));
- }
+ const auto* c0_vec = assert_cast<const ColVecA*>(c0.get());
+ vector_constant<scale_left, scale_right>(c0_vec->get_data(),
b, vec_res, scale);
} else {
- if (const ColVecA* c0_vec =
check_and_get_column<ColVecA>(c0.get())) {
- if (const ColVecB* c1_vec =
check_and_get_column<ColVecB>(c1.get()))
- vector_vector<scale_left,
scale_right>(c0_vec->get_data(),
-
c1_vec->get_data(), vec_res, scale);
- else {
- throw Exception(Status::FatalError("Wrong column in
Decimal comparison"));
- }
- } else {
- throw Exception(Status::FatalError("Wrong column in
Decimal comparison"));
- }
+ const auto* c0_vec = assert_cast<const ColVecA*>(c0.get());
+ const auto* c1_vec = assert_cast<const ColVecB*>(c1.get());
+ vector_vector<scale_left, scale_right>(c0_vec->get_data(),
c1_vec->get_data(),
+ vec_res, scale);
}
return c_res;
} else {
diff --git a/be/src/exec/common/columns_hashing.h
b/be/src/exec/common/columns_hashing.h
index 3ed5a8d58b4..ee6a76445df 100644
--- a/be/src/exec/common/columns_hashing.h
+++ b/be/src/exec/common/columns_hashing.h
@@ -114,8 +114,7 @@ struct HashMethodSingleLowNullableColumn : public
SingleColumnMethod {
const ColumnNullable* key_column;
static ColumnRawPtrs get_nested_column(const IColumn* col) {
- const auto* nullable = check_and_get_column<ColumnNullable>(*col);
- DCHECK(nullable != nullptr);
+ const auto* nullable = assert_cast<const ColumnNullable*>(col);
const auto* const nested_col = nullable->get_nested_column_ptr().get();
return {nested_col};
}
diff --git a/be/src/exec/common/variant_util.cpp
b/be/src/exec/common/variant_util.cpp
index 2f2ce53d8ea..39e8f236ecd 100644
--- a/be/src/exec/common/variant_util.cpp
+++ b/be/src/exec/common/variant_util.cpp
@@ -358,7 +358,7 @@ Status cast_column(const ColumnWithTypeAndName& arg, const
DataTypePtr& type, Co
variant->create_root(arg.type, arg.column->assume_mutable());
ColumnPtr nullable = ColumnNullable::create(
variant->get_ptr(),
-
check_and_get_column<ColumnNullable>(arg.column.get())->get_null_map_column_ptr());
+ assert_cast<const
ColumnNullable*>(arg.column.get())->get_null_map_column_ptr());
*result = type->is_nullable() ? nullable : variant->get_ptr();
return Status::OK();
}
diff --git a/be/src/exec/operator/join_probe_operator.cpp
b/be/src/exec/operator/join_probe_operator.cpp
index a02f677a121..cc36172b69d 100644
--- a/be/src/exec/operator/join_probe_operator.cpp
+++ b/be/src/exec/operator/join_probe_operator.cpp
@@ -66,7 +66,8 @@ void JoinProbeLocalState<SharedStateArg,
Derived>::_construct_mutable_join_block
const auto& mark_column = assert_cast<const ColumnNullable&>(
*_join_block.get_by_position(_mark_column_id).column);
auto& nested_column = mark_column.get_nested_column();
- DCHECK(check_and_get_column<ColumnUInt8>(nested_column) != nullptr);
+ [[maybe_unused]] const auto& nested_uint8_column =
+ assert_cast<const ColumnUInt8&>(nested_column);
#endif
}
}
diff --git a/be/src/exec/sink/writer/iceberg/partition_transformers.h
b/be/src/exec/sink/writer/iceberg/partition_transformers.h
index 37c03f0d3fb..3b1f6adbf4f 100644
--- a/be/src/exec/sink/writer/iceberg/partition_transformers.h
+++ b/be/src/exec/sink/writer/iceberg/partition_transformers.h
@@ -338,7 +338,7 @@ public:
is_nullable = false;
}
- const auto* const decimal_col =
check_and_get_column<ColumnDecimal<PT>>(column_ptr.get());
+ const auto* const decimal_col = assert_cast<const
ColumnDecimal<PT>*>(column_ptr.get());
const auto& vec_src = decimal_col->get_data();
auto col_res = ColumnDecimal<PT>::create(vec_src.size(),
decimal_col->get_scale());
diff --git a/be/src/exec/sink/writer/iceberg/viceberg_table_writer.cpp
b/be/src/exec/sink/writer/iceberg/viceberg_table_writer.cpp
index 4e979bbb042..6a67b6ca8bd 100644
--- a/be/src/exec/sink/writer/iceberg/viceberg_table_writer.cpp
+++ b/be/src/exec/sink/writer/iceberg/viceberg_table_writer.cpp
@@ -664,7 +664,7 @@ std::any VIcebergTableWriter::_get_iceberg_partition_value(
auto [item, size] = col_ptr->get_data_at(position);
switch (type_desc) {
case TYPE_BOOLEAN: {
- Field field = check_and_get_column<const
ColumnUInt8>(*col_ptr)->operator[](position);
+ Field field = assert_cast<const
ColumnUInt8*>(col_ptr.get())->operator[](position);
return field.get<TYPE_BOOLEAN>();
}
case TYPE_TINYINT: {
diff --git a/be/src/exec/sink/writer/vhive_table_writer.cpp
b/be/src/exec/sink/writer/vhive_table_writer.cpp
index 8007e79e486..04a0c04c1dd 100644
--- a/be/src/exec/sink/writer/vhive_table_writer.cpp
+++ b/be/src/exec/sink/writer/vhive_table_writer.cpp
@@ -447,7 +447,7 @@ std::string VHiveTableWriter::_to_partition_value(const
DataTypePtr& type_desc,
auto [item, size] = column->get_data_at(position);
switch (type_desc->get_primitive_type()) {
case TYPE_BOOLEAN: {
- Field field = check_and_get_column<const
ColumnUInt8>(*column)->operator[](position);
+ Field field = assert_cast<const
ColumnUInt8*>(column.get())->operator[](position);
return std::to_string(field.get<TYPE_BOOLEAN>());
}
case TYPE_TINYINT: {
diff --git a/be/src/exprs/function/array/function_array_aggregation.cpp
b/be/src/exprs/function/array/function_array_aggregation.cpp
index 6fa48017ee2..dbcf438e419 100644
--- a/be/src/exprs/function/array/function_array_aggregation.cpp
+++ b/be/src/exprs/function/array/function_array_aggregation.cpp
@@ -495,10 +495,10 @@ public:
auto ptr = typed_column.column->convert_to_full_column_if_const();
const typename Impl::column_type* column_array;
if (ptr->is_nullable()) {
- column_array = check_and_get_column<const typename
Impl::column_type>(
+ column_array = assert_cast<const typename Impl::column_type*>(
assert_cast<const
ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
} else {
- column_array = check_and_get_column<const typename
Impl::column_type>(ptr.get());
+ column_array = assert_cast<const typename
Impl::column_type*>(ptr.get());
}
const auto* data_type_array =
assert_cast<const
DataTypeArray*>(remove_nullable(typed_column.type).get());
diff --git a/be/src/exprs/function/array/function_array_apply.cpp
b/be/src/exprs/function/array/function_array_apply.cpp
index df55ee5ca54..d7fec529318 100644
--- a/be/src/exprs/function/array/function_array_apply.cpp
+++ b/be/src/exprs/function/array/function_array_apply.cpp
@@ -146,7 +146,7 @@ private:
if (!src_column.is_nullable()) {
src_column_data_ptr = src_column.get_raw_data().data;
} else {
- const auto* nullable_col =
check_and_get_column<ColumnNullable>(src_column);
+ const auto* nullable_col = assert_cast<const
ColumnNullable*>(&src_column);
src_column_data_ptr =
nullable_col->get_nested_column().get_raw_data().data;
null_map_data = nullable_col->get_null_map_data().data();
}
diff --git a/be/src/exprs/function/array/function_array_concat.cpp
b/be/src/exprs/function/array/function_array_concat.cpp
index be3a0f50521..e0389693136 100644
--- a/be/src/exprs/function/array/function_array_concat.cpp
+++ b/be/src/exprs/function/array/function_array_concat.cpp
@@ -82,7 +82,7 @@ public:
for (size_t col : arguments) {
ColumnPtr src_column =
block.get_by_position(col).column->convert_to_full_column_if_const();
- const auto& src_column_array =
check_and_get_column<ColumnArray>(*src_column);
+ const auto* src_column_array = assert_cast<const
ColumnArray*>(src_column.get());
total_size += src_column_array->get_data().size();
}
result_nested_col.reserve(total_size);
@@ -92,7 +92,7 @@ public:
for (size_t col : arguments) {
ColumnPtr src_column =
block.get_by_position(col).column->convert_to_full_column_if_const();
- const auto& src_column_array =
check_and_get_column<ColumnArray>(*src_column);
+ const auto* src_column_array = assert_cast<const
ColumnArray*>(src_column.get());
const auto& src_column_offsets =
src_column_array->get_offsets();
const size_t length = src_column_offsets[row] -
src_column_offsets[row - 1];
result_nested_col.insert_range_from(src_column_array->get_data(),
diff --git a/be/src/exprs/function/array/function_array_cum_sum.cpp
b/be/src/exprs/function/array/function_array_cum_sum.cpp
index d23d54f0e03..d5dc5436ad8 100644
--- a/be/src/exprs/function/array/function_array_cum_sum.cpp
+++ b/be/src/exprs/function/array/function_array_cum_sum.cpp
@@ -133,8 +133,7 @@ public:
auto src_nested_type = assert_cast<const
DataTypeArray&>(*src_arg.type).get_nested_type();
// get null map
- const ColumnNullable* src_nested_nullable_col =
- check_and_get_column<ColumnNullable>(*src_nested_column);
+ const auto* src_nested_nullable_col = assert_cast<const
ColumnNullable*>(src_nested_column);
src_nested_column =
src_nested_nullable_col->get_nested_column_ptr().get();
const NullMapType& src_null_map =
src_nested_nullable_col->get_null_map_column().get_data();
diff --git a/be/src/exprs/function/array/function_array_distinct.h
b/be/src/exprs/function/array/function_array_distinct.h
index edd0d82a45b..885677d7b88 100644
--- a/be/src/exprs/function/array/function_array_distinct.h
+++ b/be/src/exprs/function/array/function_array_distinct.h
@@ -104,7 +104,7 @@ public:
const NullMapType* src_null_map = nullptr;
if (src_nested_column->is_nullable()) {
const auto* src_nested_nullable_col =
- check_and_get_column<ColumnNullable>(*src_nested_column);
+ assert_cast<const ColumnNullable*>(src_nested_column);
src_nested_column =
src_nested_nullable_col->get_nested_column_ptr().get();
src_null_map =
&src_nested_nullable_col->get_null_map_column().get_data();
}
diff --git a/be/src/exprs/function/array/function_array_element.h
b/be/src/exprs/function/array/function_array_element.h
index f3240eb47d2..065f0f5fd18 100644
--- a/be/src/exprs/function/array/function_array_element.h
+++ b/be/src/exprs/function/array/function_array_element.h
@@ -110,7 +110,7 @@ public:
block.get_by_position(arguments[0]).column->convert_to_full_column_if_const());
auto col_left = block.get_by_position(arguments[0]);
if (col_left.column->is_nullable()) {
- auto null_col =
check_and_get_column<ColumnNullable>(*col_left.column);
+ const auto* null_col = assert_cast<const
ColumnNullable*>(col_left.column.get());
src_null_map = null_col->get_null_map_column().get_data().data();
args = {{null_col->get_nested_column_ptr(),
remove_nullable(col_left.type),
col_left.name},
diff --git a/be/src/exprs/function/array/function_array_enumerate.cpp
b/be/src/exprs/function/array/function_array_enumerate.cpp
index f1af94600bc..ccfca1f1a3a 100644
--- a/be/src/exprs/function/array/function_array_enumerate.cpp
+++ b/be/src/exprs/function/array/function_array_enumerate.cpp
@@ -106,8 +106,7 @@ public:
ColumnPtr res_column =
ColumnArray::create(std::move(nested_column),
array->get_offsets_ptr());
if (block.get_by_position(arguments[0]).column->is_nullable()) {
- const ColumnNullable* nullable =
- check_and_get_column<ColumnNullable>(left_column.get());
+ const auto* nullable = assert_cast<const
ColumnNullable*>(left_column.get());
res_column = ColumnNullable::create(
res_column,
nullable->get_null_map_column().clone_resized(nullable->size()));
}
diff --git a/be/src/exprs/function/array/function_array_enumerate_uniq.cpp
b/be/src/exprs/function/array/function_array_enumerate_uniq.cpp
index 494076f926f..e2cc6f2ff37 100644
--- a/be/src/exprs/function/array/function_array_enumerate_uniq.cpp
+++ b/be/src/exprs/function/array/function_array_enumerate_uniq.cpp
@@ -150,7 +150,7 @@ public:
const NullMapType* null_map = nullptr;
if (arguments.size() == 1 && data_columns[0]->is_nullable()) {
- const ColumnNullable* nullable =
check_and_get_column<ColumnNullable>(*data_columns[0]);
+ const auto* nullable = assert_cast<const
ColumnNullable*>(data_columns[0]);
data_columns[0] = nullable->get_nested_column_ptr().get();
null_map = &nullable->get_null_map_column().get_data();
}
@@ -196,8 +196,7 @@ public:
if (arguments.size() == 1 &&
block.get_by_position(arguments[0]).column->is_nullable()) {
auto left_column =
block.get_by_position(arguments[0]).column->convert_to_full_column_if_const();
- const ColumnNullable* nullable =
- check_and_get_column<ColumnNullable>(left_column.get());
+ const auto* nullable = assert_cast<const
ColumnNullable*>(left_column.get());
res_column = ColumnNullable::create(
res_column,
nullable->get_null_map_column().clone_resized(nullable->size()));
}
diff --git a/be/src/exprs/function/array/function_array_mapped.h
b/be/src/exprs/function/array/function_array_mapped.h
index 3504ef4346c..c86b6e20492 100644
--- a/be/src/exprs/function/array/function_array_mapped.h
+++ b/be/src/exprs/function/array/function_array_mapped.h
@@ -51,10 +51,10 @@ public:
auto ptr = typed_column.column->convert_to_full_column_if_const();
const typename Impl::column_type* column_array;
if (ptr->is_nullable()) {
- column_array = check_and_get_column<const typename
Impl::column_type>(
+ column_array = assert_cast<const typename Impl::column_type*>(
assert_cast<const
ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
} else {
- column_array = check_and_get_column<const typename
Impl::column_type>(ptr.get());
+ column_array = assert_cast<const typename
Impl::column_type*>(ptr.get());
}
const auto* data_type_array =
assert_cast<const
DataTypeArray*>(remove_nullable(typed_column.type).get());
diff --git a/be/src/exprs/function/cast/cast_base.cpp
b/be/src/exprs/function/cast/cast_base.cpp
index 04ea2cab562..ecaf5875853 100644
--- a/be/src/exprs/function/cast/cast_base.cpp
+++ b/be/src/exprs/function/cast/cast_base.cpp
@@ -171,7 +171,7 @@ Status cast_from_string_to_complex_type(FunctionContext*
context, Block& block,
const ColumnNumbers& arguments,
uint32_t result,
size_t input_rows_count,
const NullMap::value_type* null_map) {
- const auto* col_from = check_and_get_column<DataTypeString::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeString::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
@@ -209,7 +209,7 @@ Status
cast_from_string_to_complex_type_strict_mode(FunctionContext* context, Bl
const ColumnNumbers&
arguments, uint32_t result,
size_t input_rows_count,
const NullMap::value_type*
null_map) {
- const auto* col_from = check_and_get_column<DataTypeString::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeString::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
diff --git a/be/src/exprs/function/cast/cast_base.h
b/be/src/exprs/function/cast/cast_base.h
index 43a97ad68b1..d759ead1260 100644
--- a/be/src/exprs/function/cast/cast_base.h
+++ b/be/src/exprs/function/cast/cast_base.h
@@ -19,6 +19,7 @@
#include <cstddef>
#include <cstdint>
+#include "core/assert_cast.h"
#include "core/block/block.h"
#include "core/call_on_type_index.h"
#include "core/data_type/data_type.h"
diff --git a/be/src/exprs/function/cast/cast_to_basic_number_common.h
b/be/src/exprs/function/cast/cast_to_basic_number_common.h
index 4c552798a65..e49c7324e73 100644
--- a/be/src/exprs/function/cast/cast_to_basic_number_common.h
+++ b/be/src/exprs/function/cast/cast_to_basic_number_common.h
@@ -457,7 +457,7 @@ class CastToImpl<Mode, DataTypeString, ToDataType> : public
CastToBase {
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from =
check_and_get_column<DataTypeString::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeString::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
auto serde = remove_nullable(to_type)->get_serde();
diff --git a/be/src/exprs/function/cast/cast_to_boolean.h
b/be/src/exprs/function/cast/cast_to_boolean.h
index b6b85700b74..a1a63522eb1 100644
--- a/be/src/exprs/function/cast/cast_to_boolean.h
+++ b/be/src/exprs/function/cast/cast_to_boolean.h
@@ -124,7 +124,7 @@ public:
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from =
check_and_get_column<DataTypeString::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeString::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
auto serde = remove_nullable(to_type)->get_serde();
@@ -156,7 +156,7 @@ public:
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from = check_and_get_column<typename
NumberType::ColumnType>(
+ const auto* col_from = assert_cast<const typename
NumberType::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
DataTypeBool::ColumnType::MutablePtr col_to =
DataTypeBool::ColumnType::create(input_rows_count);
@@ -179,7 +179,7 @@ public:
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from = check_and_get_column<typename
DecimalType::ColumnType>(
+ const auto* col_from = assert_cast<const typename
DecimalType::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
const auto type_from = block.get_by_position(arguments[0]).type;
DataTypeBool::ColumnType::MutablePtr col_to =
diff --git a/be/src/exprs/function/cast/cast_to_date.h
b/be/src/exprs/function/cast/cast_to_date.h
index 1b05d74e51b..535de7e3d48 100644
--- a/be/src/exprs/function/cast/cast_to_date.h
+++ b/be/src/exprs/function/cast/cast_to_date.h
@@ -49,7 +49,7 @@ public:
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from =
check_and_get_column<DataTypeString::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeString::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
@@ -84,7 +84,7 @@ public:
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from = check_and_get_column<typename
FromDataType::ColumnType>(
+ const auto* col_from = assert_cast<const typename
FromDataType::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
auto concrete_serde = std::dynamic_pointer_cast<typename
ToDataType::SerDeType>(
@@ -141,7 +141,7 @@ public:
constexpr bool Nullable = std::is_same_v<FromDataType, ToDataType> &&
(IsTimeV2Type<FromDataType> ||
IsDateTimeV2Type<FromDataType>);
- const auto* col_from = check_and_get_column<typename
FromDataType::ColumnType>(
+ const auto* col_from = assert_cast<const typename
FromDataType::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto col_to = ToDataType::ColumnType::create(input_rows_count);
ColumnUInt8::MutablePtr col_nullmap;
diff --git a/be/src/exprs/function/cast/cast_to_decimal.h
b/be/src/exprs/function/cast/cast_to_decimal.h
index 7d9f227877a..daec3a53a54 100644
--- a/be/src/exprs/function/cast/cast_to_decimal.h
+++ b/be/src/exprs/function/cast/cast_to_decimal.h
@@ -686,7 +686,7 @@ class CastToImpl<Mode, DataTypeString, ToDataType> : public
CastToBase {
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from =
check_and_get_column<DataTypeString::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeString::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
diff --git a/be/src/exprs/function/cast/cast_to_ip.h
b/be/src/exprs/function/cast/cast_to_ip.h
index b6579f325c3..81eb1e798ed 100644
--- a/be/src/exprs/function/cast/cast_to_ip.h
+++ b/be/src/exprs/function/cast/cast_to_ip.h
@@ -53,7 +53,7 @@ public:
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from =
check_and_get_column<DataTypeString::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeString::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
auto to_type = block.get_by_position(result).type;
@@ -86,7 +86,7 @@ public:
Status execute_impl(FunctionContext* context, Block& block, const
ColumnNumbers& arguments,
uint32_t result, size_t input_rows_count,
const NullMap::value_type* null_map = nullptr) const
override {
- const auto* col_from = check_and_get_column<DataTypeIPv4::ColumnType>(
+ const auto* col_from = assert_cast<const DataTypeIPv4::ColumnType*>(
block.get_by_position(arguments[0]).column.get());
const auto size = col_from->size();
auto col_to = DataTypeIPv6::ColumnType::create(size);
diff --git a/be/src/exprs/function/function_always_not_nullable.h
b/be/src/exprs/function/function_always_not_nullable.h
index 2277a921e94..dc9b1eb3073 100644
--- a/be/src/exprs/function/function_always_not_nullable.h
+++ b/be/src/exprs/function/function_always_not_nullable.h
@@ -48,13 +48,13 @@ public:
column->get_name(), get_name());
};
if constexpr (is_nullable) {
- const ColumnNullable* col_nullable =
check_and_get_column<ColumnNullable>(column.get());
+ const ColumnNullable* col_nullable = assert_cast<const
ColumnNullable*>(column.get());
const ColumnType* col =
check_and_get_column<ColumnType>(col_nullable->get_nested_column_ptr().get());
- const ColumnUInt8* col_nullmap = check_and_get_column<ColumnUInt8>(
- col_nullable->get_null_map_column_ptr().get());
+ const ColumnUInt8* col_nullmap =
+ assert_cast<const
ColumnUInt8*>(col_nullable->get_null_map_column_ptr().get());
- if (col != nullptr && col_nullmap != nullptr) {
+ if (col != nullptr) {
if constexpr (WithReturn) {
RETURN_IF_ERROR(
Function::vector_nullable(col,
col_nullmap->get_data(), column_result));
@@ -65,7 +65,7 @@ public:
return type_error();
}
} else {
- const ColumnType* col =
check_and_get_column<ColumnType>(column.get());
+ const ColumnType* col = assert_cast<const
ColumnType*>(column.get());
if constexpr (WithReturn) {
RETURN_IF_ERROR(Function::vector(col, column_result));
} else {
diff --git a/be/src/exprs/function/function_collection_in.h
b/be/src/exprs/function/function_collection_in.h
index a6469cbc783..ef69347a068 100644
--- a/be/src/exprs/function/function_collection_in.h
+++ b/be/src/exprs/function/function_collection_in.h
@@ -114,7 +114,7 @@ public:
DCHECK(const_column_ptr != nullptr);
const auto& [col, _] =
unpack_if_const(const_column_ptr->column_ptr);
if (col->is_nullable()) {
- const auto* null_col =
check_and_get_column<ColumnNullable>(col.get());
+ const auto* null_col = assert_cast<const
ColumnNullable*>(col.get());
if (null_col->has_null()) {
state->null_in_set = true;
} else {
@@ -157,7 +157,7 @@ public:
auto materialized_column_not_null = materialized_column;
if (materialized_column_not_null->is_nullable()) {
materialized_column_not_null =
-
check_and_get_column<ColumnNullable>(materialized_column_not_null.get())
+ assert_cast<const
ColumnNullable*>(materialized_column_not_null.get())
->get_nested_column_ptr();
}
diff --git a/be/src/exprs/function/function_date_or_datetime_to_string.cpp
b/be/src/exprs/function/function_date_or_datetime_to_string.cpp
index 9788801e39f..d808d806307 100644
--- a/be/src/exprs/function/function_date_or_datetime_to_string.cpp
+++ b/be/src/exprs/function/function_date_or_datetime_to_string.cpp
@@ -147,7 +147,7 @@ public:
ColumnPtr actual_col = source_col;
if (is_column_nullable(*source_col)) {
- const auto* nullable_col =
check_and_get_column<ColumnNullable>(source_col.get());
+ const auto* nullable_col = assert_cast<const
ColumnNullable*>(source_col.get());
actual_col = nullable_col->get_nested_column_ptr();
null_map = &nullable_col->get_null_map_data();
}
@@ -164,7 +164,7 @@ public:
null_map);
if (null_map) {
- const auto* nullable_col =
check_and_get_column<ColumnNullable>(source_col.get());
+ const auto* nullable_col = assert_cast<const
ColumnNullable*>(source_col.get());
block.replace_by_position(
result,
ColumnNullable::create(std::move(col_res),
diff --git a/be/src/exprs/function/function_datetime_floor_ceil.cpp
b/be/src/exprs/function/function_datetime_floor_ceil.cpp
index 8863ea42576..6369dd9592c 100644
--- a/be/src/exprs/function/function_datetime_floor_ceil.cpp
+++ b/be/src/exprs/function/function_datetime_floor_ceil.cpp
@@ -228,8 +228,7 @@ public:
Core::vector_vector_anchor(sources->get_data(),
delta_vec_column0->get_data(),
col_to->get_data(),
result_null_map, context);
} else {
- const auto* delta_vec_column1 =
check_and_get_column<ColumnInt32>(delta_column);
- DCHECK(delta_vec_column1 != nullptr);
+ const auto* delta_vec_column1 = assert_cast<const
ColumnInt32*>(&delta_column);
// time_round(datetime, period)
Core::vector_vector_period(sources->get_data(),
delta_vec_column1->get_data(),
col_to->get_data(),
result_null_map, context);
@@ -248,8 +247,8 @@ public:
Core::vector_const_const(sources->get_data(), period, origin,
col_to->get_data(),
result_null_map, context);
} else if (col_const[1] && !col_const[2]) {
- const auto arg2_column =
-
check_and_get_column<ColumnVector<PType>>(*argument_columns[2]);
+ const auto* arg2_column =
+ assert_cast<const
ColumnVector<PType>*>(argument_columns[2].get());
// time_round(datetime, const(period), origin)
Int32 period = (*argument_columns[1])[0].get<TYPE_INT>();
bool period_is_null =
block.get_by_position(arguments[1]).type->is_nullable() &&
@@ -260,17 +259,17 @@ public:
Core::vector_const_vector(sources->get_data(), period,
arg2_column->get_data(),
col_to->get_data(), result_null_map,
context);
} else if (!col_const[1] && col_const[2]) {
- const auto* arg1_column =
check_and_get_column<ColumnInt32>(*argument_columns[1]);
+ const auto* arg1_column =
+ assert_cast<const
ColumnInt32*>(argument_columns[1].get());
// time_round(datetime, period, const(origin))
Core::vector_vector_const(sources->get_data(),
arg1_column->get_data(),
(*argument_columns[2])[0].get<PType>(),
col_to->get_data(), result_null_map,
context);
} else {
- const auto* arg1_column =
check_and_get_column<ColumnInt32>(*argument_columns[1]);
- const auto arg2_column =
-
check_and_get_column<ColumnVector<PType>>(*argument_columns[2]);
- DCHECK(arg1_column != nullptr);
- DCHECK(arg2_column != nullptr);
+ const auto* arg1_column =
+ assert_cast<const
ColumnInt32*>(argument_columns[1].get());
+ const auto* arg2_column =
+ assert_cast<const
ColumnVector<PType>*>(argument_columns[2].get());
// time_round(datetime, period, origin)
Core::vector_vector_vector(sources->get_data(),
arg1_column->get_data(),
arg2_column->get_data(),
col_to->get_data(),
diff --git a/be/src/exprs/function/function_hex.cpp
b/be/src/exprs/function/function_hex.cpp
index 3a594980e62..9c607cf7d66 100644
--- a/be/src/exprs/function/function_hex.cpp
+++ b/be/src/exprs/function/function_hex.cpp
@@ -89,7 +89,7 @@ struct HexStringImpl {
static Status vector(ColumnPtr argument_column, size_t input_rows_count,
ColumnString::Chars& dst_data, ColumnString::Offsets&
dst_offsets) {
- const auto* str_col =
check_and_get_column<ColumnString>(argument_column.get());
+ const auto* str_col = assert_cast<const
ColumnString*>(argument_column.get());
const auto& data = str_col->get_chars();
const auto& offsets = str_col->get_offsets();
dst_offsets.resize(input_rows_count);
@@ -136,7 +136,7 @@ struct HexIntImpl {
static Status vector(ColumnPtr argument_column, size_t input_rows_count,
ColumnString::Chars& res_data, ColumnString::Offsets&
res_offsets) {
- const auto* str_col =
check_and_get_column<ColumnInt64>(argument_column.get());
+ const auto* str_col = assert_cast<const
ColumnInt64*>(argument_column.get());
const auto& data = str_col->get_data();
res_offsets.resize(input_rows_count);
@@ -153,7 +153,7 @@ struct HexHLLImpl {
static Status vector(ColumnPtr argument_column, size_t input_rows_count,
ColumnString::Chars& res_data, ColumnString::Offsets&
res_offsets) {
- const auto* str_col =
check_and_get_column<ColumnHLL>(argument_column.get());
+ const auto* str_col = assert_cast<const
ColumnHLL*>(argument_column.get());
const auto& hll_data = str_col->get_data();
res_offsets.resize(input_rows_count);
size_t total_length = 0, offset = 0;
diff --git a/be/src/exprs/function/function_hll.cpp
b/be/src/exprs/function/function_hll.cpp
index c5dab68ee75..ec47b07744b 100644
--- a/be/src/exprs/function/function_hll.cpp
+++ b/be/src/exprs/function/function_hll.cpp
@@ -99,10 +99,10 @@ public:
check_and_get_column<ColumnNullable>(column.get())) {
const ColumnHLL* col =
check_and_get_column<ColumnHLL>(col_nullable->get_nested_column_ptr().get());
- const ColumnUInt8* col_nullmap = check_and_get_column<ColumnUInt8>(
- col_nullable->get_null_map_column_ptr().get());
+ const ColumnUInt8* col_nullmap =
+ assert_cast<const
ColumnUInt8*>(col_nullable->get_null_map_column_ptr().get());
- if (col != nullptr && col_nullmap != nullptr) {
+ if (col != nullptr) {
Function::vector_nullable(col->get_data(),
col_nullmap->get_data(), column_result);
block.replace_by_position(result, std::move(column_result));
return Status::OK();
diff --git a/be/src/exprs/function/function_jsonb.cpp
b/be/src/exprs/function/function_jsonb.cpp
index 1ab2db86c35..40c10cb4e61 100644
--- a/be/src/exprs/function/function_jsonb.cpp
+++ b/be/src/exprs/function/function_jsonb.cpp
@@ -501,7 +501,7 @@ public:
auto&& [jsonb_data_column, json_data_const] =
unpack_if_const(block.get_by_position(arguments[0]).column);
if (jsonb_data_column->is_nullable()) {
- const auto* nullable =
check_and_get_column<ColumnNullable>(jsonb_data_column.get());
+ const auto* nullable = assert_cast<const
ColumnNullable*>(jsonb_data_column.get());
col_from_string =
assert_cast<const
ColumnString*>(nullable->get_nested_column_ptr().get());
data_null_map = &nullable->get_null_map_data();
@@ -519,8 +519,7 @@ public:
std::tie(jsonb_path_column, path_const) =
unpack_if_const(block.get_by_position(arguments[1]).column);
if (jsonb_path_column->is_nullable()) {
- const auto* nullable =
-
check_and_get_column<ColumnNullable>(jsonb_path_column.get());
+ const auto* nullable = assert_cast<const
ColumnNullable*>(jsonb_path_column.get());
jsonb_path_column = nullable->get_nested_column_ptr();
path_null_map = &nullable->get_null_map_data();
}
@@ -3145,4 +3144,4 @@ void register_function_jsonb(SimpleFunctionFactory&
factory) {
factory.register_function<FunctionStripNullValue>();
}
-} // namespace doris
\ No newline at end of file
+} // namespace doris
diff --git a/be/src/exprs/function/function_needs_to_handle_null.h
b/be/src/exprs/function/function_needs_to_handle_null.h
index 236a8710d68..4ae4c49a6a7 100644
--- a/be/src/exprs/function/function_needs_to_handle_null.h
+++ b/be/src/exprs/function/function_needs_to_handle_null.h
@@ -136,7 +136,7 @@ private:
if (is_column_nullable(*col_ptr)) {
has_nullable = true;
- const auto* nullable =
check_and_get_column<ColumnNullable>(col_ptr.get());
+ const auto* nullable = assert_cast<const
ColumnNullable*>(col_ptr.get());
columns_info[i].nested_col = &nullable->get_nested_column();
columns_info[i].null_map = &nullable->get_null_map_data();
} else {
@@ -155,4 +155,4 @@ private:
return has_nullable;
}
};
-} // namespace doris
\ No newline at end of file
+} // namespace doris
diff --git a/be/src/exprs/function/function_quantile_state.cpp
b/be/src/exprs/function/function_quantile_state.cpp
index a0edb82dbf9..eed78b97da9 100644
--- a/be/src/exprs/function/function_quantile_state.cpp
+++ b/be/src/exprs/function/function_quantile_state.cpp
@@ -85,26 +85,19 @@ public:
template <bool is_nullable>
Status execute_internal(const ColumnPtr& column, const DataTypePtr&
data_type,
MutableColumnPtr& column_result, float
compression) const {
- auto type_error = [&]() {
- return Status::RuntimeError("Illegal column {} of argument of
function {}",
- column->get_name(), get_name());
- };
const ColumnNullable* col_nullable = nullptr;
const ColumnUInt8* col_nullmap = nullptr;
const ColumnFloat64* col = nullptr;
const NullMap* nullmap = nullptr;
if constexpr (is_nullable) {
- col_nullable = check_and_get_column<ColumnNullable>(column.get());
- col_nullmap = check_and_get_column<ColumnUInt8>(
- col_nullable->get_null_map_column_ptr().get());
- col =
check_and_get_column<ColumnFloat64>(col_nullable->get_nested_column_ptr().get());
- if (col == nullptr || col_nullmap == nullptr) {
- return type_error();
- }
+ col_nullable = assert_cast<const ColumnNullable*>(column.get());
+ col_nullmap =
+ assert_cast<const
ColumnUInt8*>(col_nullable->get_null_map_column_ptr().get());
+ col = assert_cast<const
ColumnFloat64*>(col_nullable->get_nested_column_ptr().get());
nullmap = &col_nullmap->get_data();
} else {
- col = check_and_get_column<ColumnFloat64>(column.get());
+ col = assert_cast<const ColumnFloat64*>(column.get());
}
auto* res_column =
reinterpret_cast<ColumnQuantileState*>(column_result.get());
auto& res_data = res_column->get_data();
diff --git a/be/src/exprs/function/function_variant_element.cpp
b/be/src/exprs/function/function_variant_element.cpp
index 9651eabcd9d..e407e595ffd 100644
--- a/be/src/exprs/function/function_variant_element.cpp
+++ b/be/src/exprs/function/function_variant_element.cpp
@@ -274,7 +274,7 @@ private:
auto type = std::make_shared<DataTypeString>();
MutableColumnPtr result_column = type->create_column();
const ColumnString& docs =
-
*check_and_get_column<ColumnString>(remove_nullable(src.get_root()).get());
+ *assert_cast<const
ColumnString*>(remove_nullable(src.get_root()).get());
simdjson::ondemand::parser parser;
std::vector<JsonPath> parsed_paths;
if (field_name.empty() || field_name[0] != '$') {
diff --git a/be/src/exprs/function/functions_multi_string_position.cpp
b/be/src/exprs/function/functions_multi_string_position.cpp
index cacd9dd5f62..d345521e067 100644
--- a/be/src/exprs/function/functions_multi_string_position.cpp
+++ b/be/src/exprs/function/functions_multi_string_position.cpp
@@ -141,7 +141,7 @@ public:
}
if (haystack_nullable) {
- auto column_nullable =
check_and_get_column<ColumnNullable>(haystack_column.get());
+ const auto* column_nullable = assert_cast<const
ColumnNullable*>(haystack_column.get());
auto& null_map = column_nullable->get_null_map_data();
for (size_t i = 0; i != input_rows_count; ++i) {
if (null_map[i] == 1) {
@@ -153,7 +153,7 @@ public:
}
if (needles_nullable) {
- auto column_nullable =
check_and_get_column<ColumnNullable>(needles_column.get());
+ const auto* column_nullable = assert_cast<const
ColumnNullable*>(needles_column.get());
auto& null_map = column_nullable->get_null_map_data();
for (size_t i = 0; i != input_rows_count; ++i) {
if (null_map[i] == 1) {
@@ -247,9 +247,8 @@ public:
offsets_res.reserve(haystack_data.size());
uint64_t offset_now = 0;
- auto& nested_column =
-
check_and_get_column<ColumnNullable>(needles_data)->get_nested_column();
- const ColumnString* needles_data_string =
check_and_get_column<ColumnString>(nested_column);
+ auto& nested_column = assert_cast<const
ColumnNullable&>(needles_data).get_nested_column();
+ const ColumnString* needles_data_string = assert_cast<const
ColumnString*>(&nested_column);
std::vector<StringRef> needles_for_row;
// haystack first, row by row.
diff --git a/be/src/exprs/function/functions_multi_string_search.cpp
b/be/src/exprs/function/functions_multi_string_search.cpp
index 3d43323861a..2dcd28d0ecb 100644
--- a/be/src/exprs/function/functions_multi_string_search.cpp
+++ b/be/src/exprs/function/functions_multi_string_search.cpp
@@ -291,7 +291,7 @@ struct FunctionMultiMatchAnyImpl {
size_t prev_needles_offset = 0;
const auto& nested_column =
-
check_and_get_column<ColumnNullable>(needles_data)->get_nested_column();
+ assert_cast<const
ColumnNullable&>(needles_data).get_nested_column();
const auto* needles_data_string =
check_and_get_column<ColumnString>(nested_column);
if (!needles_data_string) {
diff --git a/be/src/exprs/function/in.h b/be/src/exprs/function/in.h
index 78435dd2764..55c709a2a58 100644
--- a/be/src/exprs/function/in.h
+++ b/be/src/exprs/function/in.h
@@ -215,7 +215,7 @@ public:
if (in_state->use_set) {
if (materialized_column->is_nullable()) {
const auto* null_col_ptr =
-
check_and_get_column<ColumnNullable>(materialized_column.get());
+ assert_cast<const
ColumnNullable*>(materialized_column.get());
const auto& null_map =
null_col_ptr->get_null_map_column().get_data();
const auto* nested_col_ptr =
null_col_ptr->get_nested_column_ptr().get();
diff --git a/be/src/exprs/function/round.h b/be/src/exprs/function/round.h
index 76ad494e540..ebc3d356c7e 100644
--- a/be/src/exprs/function/round.h
+++ b/be/src/exprs/function/round.h
@@ -460,7 +460,7 @@ struct Dispatcher {
[[maybe_unused]] Int16 result_scale) {
if constexpr (is_int_or_bool(T) || is_ip(T) || is_date_type(T) ||
is_float_or_double(T) ||
T == TYPE_TIMEV2 || T == TYPE_UINT32 || T ==
TYPE_UINT64) {
- const auto* const col =
check_and_get_column<ColumnVector<T>>(col_general);
+ const auto* const col = assert_cast<const
ColumnVector<T>*>(col_general);
auto col_res = ColumnVector<T>::create();
typename ColumnVector<T>::Container& vec_res = col_res->get_data();
@@ -484,7 +484,7 @@ struct Dispatcher {
return col_res;
} else if constexpr (T == TYPE_DECIMALV2) {
const auto* const decimal_col =
- check_and_get_column<typename
PrimitiveTypeTraits<T>::ColumnType>(col_general);
+ assert_cast<const typename
PrimitiveTypeTraits<T>::ColumnType*>(col_general);
const auto& vec_src = decimal_col->get_data();
const size_t input_rows_count = vec_src.size();
auto col_res =
PrimitiveTypeTraits<T>::ColumnType::create(vec_src.size(), result_scale);
@@ -520,7 +520,7 @@ struct Dispatcher {
return col_res;
} else if constexpr (is_decimal(T)) {
const auto* const decimal_col =
- check_and_get_column<typename
PrimitiveTypeTraits<T>::ColumnType>(col_general);
+ assert_cast<const typename
PrimitiveTypeTraits<T>::ColumnType*>(col_general);
const auto& vec_src = decimal_col->get_data();
const size_t input_rows_count = vec_src.size();
auto col_res =
PrimitiveTypeTraits<T>::ColumnType::create(vec_src.size(), result_scale);
diff --git a/be/src/storage/predicate/comparison_predicate.h
b/be/src/storage/predicate/comparison_predicate.h
index 12f57237e7e..e1ebae39f8f 100644
--- a/be/src/storage/predicate/comparison_predicate.h
+++ b/be/src/storage/predicate/comparison_predicate.h
@@ -393,14 +393,13 @@ public:
});
if (column.is_nullable()) {
- const auto* nullable_column_ptr =
check_and_get_column<ColumnNullable>(column);
+ const auto* nullable_column_ptr = assert_cast<const
ColumnNullable*>(&column);
const auto& nested_column =
nullable_column_ptr->get_nested_column();
const auto& null_map =
nullable_column_ptr->get_null_map_column().get_data();
if (nested_column.is_column_dictionary()) {
if constexpr (is_string_type(Type)) {
- const auto* dict_column_ptr =
- check_and_get_column<ColumnDictI32>(nested_column);
+ const auto* dict_column_ptr = assert_cast<const
ColumnDictI32*>(&nested_column);
auto dict_code =
_find_code_from_dictionary_column(*dict_column_ptr);
do {
@@ -420,18 +419,18 @@ public:
__builtin_unreachable();
}
} else {
- auto* data_array = check_and_get_column<
- const
PredicateColumnType<PredicateEvaluateType<Type>>>(
- nested_column)
- ->get_data()
- .data();
+ auto* data_array =
+ assert_cast<const
PredicateColumnType<PredicateEvaluateType<Type>>*>(
+ &nested_column)
+ ->get_data()
+ .data();
_base_loop_vec<true, is_and>(size, flags, null_map.data(),
data_array, _value);
}
} else {
if (column.is_column_dictionary()) {
if constexpr (is_string_type(Type)) {
- const auto* dict_column_ptr =
check_and_get_column<ColumnDictI32>(column);
+ const auto* dict_column_ptr = assert_cast<const
ColumnDictI32*>(&column);
auto dict_code =
_find_code_from_dictionary_column(*dict_column_ptr);
do {
if constexpr (PT == PredicateType::EQ) {
@@ -450,8 +449,8 @@ public:
}
} else {
auto* data_array =
-
check_and_get_column<PredicateColumnType<PredicateEvaluateType<Type>>>(
- column)
+ assert_cast<const
PredicateColumnType<PredicateEvaluateType<Type>>*>(
+ &column)
->get_data()
.data();
@@ -487,7 +486,7 @@ public:
private:
uint16_t _evaluate_inner(const IColumn& column, uint16_t* sel, uint16_t
size) const override {
if (column.is_nullable()) {
- const auto* nullable_column_ptr =
check_and_get_column<ColumnNullable>(column);
+ const auto* nullable_column_ptr = assert_cast<const
ColumnNullable*>(&column);
const auto& nested_column =
nullable_column_ptr->get_nested_column();
const auto& null_map =
nullable_column_ptr->get_null_map_column().get_data();
@@ -540,7 +539,7 @@ private:
void _evaluate_bit(const IColumn& column, const uint16_t* sel, uint16_t
size,
bool* flags) const {
if (column.is_nullable()) {
- const auto* nullable_column_ptr =
check_and_get_column<ColumnNullable>(column);
+ const auto* nullable_column_ptr = assert_cast<const
ColumnNullable*>(&column);
const auto& nested_column =
nullable_column_ptr->get_nested_column();
const auto& null_map =
nullable_column_ptr->get_null_map_column().get_data();
@@ -601,7 +600,7 @@ private:
uint16_t size, bool* flags) const {
if (column->is_column_dictionary()) {
if constexpr (is_string_type(Type)) {
- const auto* dict_column_ptr =
check_and_get_column<ColumnDictI32>(column);
+ const auto* dict_column_ptr = assert_cast<const
ColumnDictI32*>(column);
const auto* data_array = dict_column_ptr->get_data().data();
auto dict_code =
_find_code_from_dictionary_column(*dict_column_ptr);
_base_loop_bit<is_nullable, is_and>(sel, size, flags,
null_map, data_array,
@@ -612,7 +611,7 @@ private:
}
} else {
auto* data_array =
-
check_and_get_column<PredicateColumnType<PredicateEvaluateType<Type>>>(column)
+ assert_cast<const
PredicateColumnType<PredicateEvaluateType<Type>>*>(column)
->get_data()
.data();
@@ -625,7 +624,7 @@ private:
uint16_t size) const {
if (column->is_column_dictionary()) {
if constexpr (is_string_type(Type)) {
- const auto* dict_column_ptr =
check_and_get_column<ColumnDictI32>(column);
+ const auto* dict_column_ptr = assert_cast<const
ColumnDictI32*>(column);
const auto& pred_col = dict_column_ptr->get_data();
const auto* pred_col_data = pred_col.data();
auto dict_code =
_find_code_from_dictionary_column(*dict_column_ptr);
@@ -650,7 +649,7 @@ private:
}
} else {
auto& pred_col =
-
check_and_get_column<PredicateColumnType<PredicateEvaluateType<Type>>>(column)
+ assert_cast<const
PredicateColumnType<PredicateEvaluateType<Type>>*>(column)
->get_data();
auto pred_col_data = pred_col.data();
uint16_t new_size = 0;
diff --git a/be/src/storage/predicate/in_list_predicate.h
b/be/src/storage/predicate/in_list_predicate.h
index f7529b7ac69..6c92290e5be 100644
--- a/be/src/storage/predicate/in_list_predicate.h
+++ b/be/src/storage/predicate/in_list_predicate.h
@@ -208,7 +208,7 @@ public:
void _evaluate_bit(const IColumn& column, const uint16_t* sel, uint16_t
size,
bool* flags) const {
if (column.is_nullable()) {
- const auto* nullable_col =
check_and_get_column<ColumnNullable>(column);
+ const auto* nullable_col = assert_cast<const
ColumnNullable*>(&column);
const auto& null_bitmap =
nullable_col->get_null_map_column().get_data();
const auto& nested_col = nullable_col->get_nested_column();
@@ -461,7 +461,7 @@ private:
int16_t new_size = 0;
if (column.is_nullable()) {
- const auto* nullable_col =
check_and_get_column<ColumnNullable>(column);
+ const auto* nullable_col = assert_cast<const
ColumnNullable*>(&column);
const auto& null_map =
nullable_col->get_null_map_column().get_data();
const auto& nested_col = nullable_col->get_nested_column();
@@ -495,7 +495,7 @@ private:
if (column->is_column_dictionary()) {
if constexpr (is_string_type(Type)) {
- const auto* nested_col_ptr =
check_and_get_column<ColumnDictI32>(column);
+ const auto* nested_col_ptr = assert_cast<const
ColumnDictI32*>(column);
const auto& data_array = nested_col_ptr->get_data();
auto segid = column->get_rowset_segment_id();
DCHECK((segid.first.hi | segid.first.mi | segid.first.lo) !=
0);
@@ -537,7 +537,7 @@ private:
}
} else {
auto& pred_col =
-
check_and_get_column<PredicateColumnType<PredicateEvaluateType<Type>>>(column)
+ assert_cast<const
PredicateColumnType<PredicateEvaluateType<Type>>*>(column)
->get_data();
auto pred_col_data = pred_col.data();
@@ -559,7 +559,7 @@ private:
const uint16_t* sel, uint16_t size, bool* flags)
const {
if (column->is_column_dictionary()) {
if constexpr (is_string_type(Type)) {
- const auto* nested_col_ptr =
check_and_get_column<ColumnDictI32>(column);
+ const auto* nested_col_ptr = assert_cast<const
ColumnDictI32*>(column);
const auto& data_array = nested_col_ptr->get_data();
auto& value_in_dict_flags =
_segment_id_to_value_in_dict_flags[column->get_rowset_segment_id()];
diff --git a/be/src/storage/predicate/like_column_predicate.cpp
b/be/src/storage/predicate/like_column_predicate.cpp
index 6b60cdc3e78..17c63b2be97 100644
--- a/be/src/storage/predicate/like_column_predicate.cpp
+++ b/be/src/storage/predicate/like_column_predicate.cpp
@@ -53,11 +53,11 @@ uint16_t LikeColumnPredicate<T>::_evaluate_inner(const
IColumn& column, uint16_t
uint16_t size) const {
uint16_t new_size = 0;
if (column.is_nullable()) {
- auto* nullable_col = check_and_get_column<ColumnNullable>(column);
+ auto* nullable_col = assert_cast<const ColumnNullable*>(&column);
auto& null_map_data = nullable_col->get_null_map_column().get_data();
auto& nested_col = nullable_col->get_nested_column();
if (nested_col.is_column_dictionary()) {
- auto* nested_col_ptr =
check_and_get_column<ColumnDictI32>(nested_col);
+ auto* nested_col_ptr = assert_cast<const
ColumnDictI32*>(&nested_col);
auto& data_array = nested_col_ptr->get_data();
const auto& dict_res =
_find_code_from_dictionary_column(*nested_col_ptr);
if (!nullable_col->has_null()) {
@@ -80,7 +80,7 @@ uint16_t LikeColumnPredicate<T>::_evaluate_inner(const
IColumn& column, uint16_t
}
}
} else {
- auto* str_col =
check_and_get_column<PredicateColumnType<T>>(nested_col);
+ auto* str_col = assert_cast<const
PredicateColumnType<T>*>(&nested_col);
if (!nullable_col->has_null()) {
ColumnUInt8::Container res(size, 0);
for (uint16_t i = 0; i != size; i++) {
@@ -111,7 +111,7 @@ uint16_t LikeColumnPredicate<T>::_evaluate_inner(const
IColumn& column, uint16_t
}
} else {
if (column.is_column_dictionary()) {
- auto* nested_col_ptr = check_and_get_column<ColumnDictI32>(column);
+ auto* nested_col_ptr = assert_cast<const ColumnDictI32*>(&column);
const auto& dict_res =
_find_code_from_dictionary_column(*nested_col_ptr);
auto& data_array = nested_col_ptr->get_data();
for (uint16_t i = 0; i != size; i++) {
@@ -121,8 +121,7 @@ uint16_t LikeColumnPredicate<T>::_evaluate_inner(const
IColumn& column, uint16_t
new_size += _opposite ^ flag;
}
} else {
- const PredicateColumnType<T>* str_col =
- check_and_get_column<PredicateColumnType<T>>(column);
+ const auto* str_col = assert_cast<const
PredicateColumnType<T>*>(&column);
ColumnUInt8::Container res(size, 0);
for (uint16_t i = 0; i != size; i++) {
diff --git a/be/src/storage/predicate/like_column_predicate.h
b/be/src/storage/predicate/like_column_predicate.h
index 937dc0079be..24f129b0fb7 100644
--- a/be/src/storage/predicate/like_column_predicate.h
+++ b/be/src/storage/predicate/like_column_predicate.h
@@ -97,11 +97,11 @@ private:
template <bool is_and>
void _evaluate_vec(const IColumn& column, uint16_t size, bool* flags)
const {
if (column.is_nullable()) {
- auto* nullable_col = check_and_get_column<ColumnNullable>(column);
+ auto* nullable_col = assert_cast<const ColumnNullable*>(&column);
auto& null_map_data =
nullable_col->get_null_map_column().get_data();
auto& nested_col = nullable_col->get_nested_column();
if (nested_col.is_column_dictionary()) {
- auto* nested_col_ptr =
check_and_get_column<ColumnDictI32>(nested_col);
+ auto* nested_col_ptr = assert_cast<const
ColumnDictI32*>(&nested_col);
const auto& dict_res =
_find_code_from_dictionary_column(*nested_col_ptr);
auto& data_array = nested_col_ptr->get_data();
for (uint16_t i = 0; i < size; i++) {
@@ -127,7 +127,7 @@ private:
}
} else {
if (column.is_column_dictionary()) {
- auto* nested_col_ptr =
check_and_get_column<ColumnDictI32>(column);
+ auto* nested_col_ptr = assert_cast<const
ColumnDictI32*>(&column);
auto& data_array = nested_col_ptr->get_data();
const auto& dict_res =
_find_code_from_dictionary_column(*nested_col_ptr);
for (uint16_t i = 0; i < size; i++) {
diff --git a/be/src/storage/schema_change/schema_change.cpp
b/be/src/storage/schema_change/schema_change.cpp
index f2583e3bcfc..aaf89d3697f 100644
--- a/be/src/storage/schema_change/schema_change.cpp
+++ b/be/src/storage/schema_change/schema_change.cpp
@@ -435,8 +435,8 @@ Status BlockChanger::_check_cast_valid(ColumnPtr
input_column, ColumnPtr output_
if (input_column->is_nullable() != output_column->is_nullable()) {
if (input_column->is_nullable()) {
- const auto* ref_null_map =
check_and_get_column<ColumnNullable>(input_column.get())
- ->get_null_map_column()
+ const auto* ref_null_map = assert_cast<const
ColumnNullable&>(*input_column)
+ .get_null_map_column()
.get_data()
.data();
@@ -450,10 +450,9 @@ Status BlockChanger::_check_cast_valid(ColumnPtr
input_column, ColumnPtr output_
input_column->get_name());
}
} else {
- const auto& null_map_column =
check_and_get_column<ColumnNullable>(output_column.get())
- ->get_null_map_column();
- const auto& nested_column =
-
check_and_get_column<ColumnNullable>(output_column.get())->get_nested_column();
+ const auto& output_nullable = assert_cast<const
ColumnNullable&>(*output_column);
+ const auto& null_map_column =
output_nullable.get_null_map_column();
+ const auto& nested_column = output_nullable.get_nested_column();
const auto* new_null_map = null_map_column.get_data().data();
if (null_map_column.size() != output_column->size()) {
@@ -483,12 +482,12 @@ Status BlockChanger::_check_cast_valid(ColumnPtr
input_column, ColumnPtr output_
}
if (input_column->is_nullable() && output_column->is_nullable()) {
- const auto* ref_null_map =
check_and_get_column<ColumnNullable>(input_column.get())
- ->get_null_map_column()
+ const auto* ref_null_map = assert_cast<const
ColumnNullable&>(*input_column)
+ .get_null_map_column()
.get_data()
.data();
- const auto* new_null_map =
check_and_get_column<ColumnNullable>(output_column.get())
- ->get_null_map_column()
+ const auto* new_null_map = assert_cast<const
ColumnNullable&>(*output_column)
+ .get_null_map_column()
.get_data()
.data();
diff --git a/be/src/storage/segment/column_reader.cpp
b/be/src/storage/segment/column_reader.cpp
index 33dcb8cad45..630a60d6f9f 100644
--- a/be/src/storage/segment/column_reader.cpp
+++ b/be/src/storage/segment/column_reader.cpp
@@ -1081,9 +1081,9 @@ Status MapFileColumnIterator::read_by_rowids(const
rowid_t* rowids, const size_t
return Status::OK();
}
// resolve ColumnMap and nullable wrapper
- const auto* column_map = check_and_get_column<ColumnMap>(
+ const auto& column_map = assert_cast<const ColumnMap&>(
dst->is_nullable() ?
static_cast<ColumnNullable&>(*dst).get_nested_column() : *dst);
- auto offsets_ptr = column_map->get_offsets_column().assume_mutable();
+ auto offsets_ptr = column_map.get_offsets_column().assume_mutable();
auto& offsets = static_cast<ColumnArray::ColumnOffsets&>(*offsets_ptr);
size_t base = offsets.get_data().empty() ? 0 : offsets.get_data().back();
@@ -1167,8 +1167,8 @@ Status MapFileColumnIterator::read_by_rowids(const
rowid_t* rowids, const size_t
}
// 6. read key/value elements for non-empty sizes
- auto keys_ptr = column_map->get_keys().assume_mutable();
- auto vals_ptr = column_map->get_values().assume_mutable();
+ auto keys_ptr = column_map.get_keys().assume_mutable();
+ auto vals_ptr = column_map.get_values().assume_mutable();
size_t this_run = sizes[0];
auto start_idx = starts_data[0];
@@ -1773,11 +1773,11 @@ Status ArrayFileColumnIterator::next_batch(size_t* n,
MutableColumnPtr& dst, boo
return Status::OK();
}
- const auto* column_array = check_and_get_column<ColumnArray>(
+ const auto& column_array = assert_cast<const ColumnArray&>(
dst->is_nullable() ?
static_cast<ColumnNullable&>(*dst).get_nested_column() : *dst);
bool offsets_has_null = false;
- auto column_offsets_ptr =
column_array->get_offsets_column().assume_mutable();
+ auto column_offsets_ptr =
column_array.get_offsets_column().assume_mutable();
ssize_t start = column_offsets_ptr->size();
RETURN_IF_ERROR(_offset_iterator->next_batch(n, column_offsets_ptr,
&offsets_has_null));
if (*n == 0) {
@@ -1787,7 +1787,7 @@ Status ArrayFileColumnIterator::next_batch(size_t* n,
MutableColumnPtr& dst, boo
RETURN_IF_ERROR(_offset_iterator->_calculate_offsets(start,
column_offsets));
size_t num_items =
column_offsets.get_data().back() - column_offsets.get_data()[start
- 1]; // -1 is valid
- auto column_items_ptr = column_array->get_data().assume_mutable();
+ auto column_items_ptr = column_array.get_data().assume_mutable();
if (num_items > 0) {
if (read_offset_only()) {
// OFFSET_ONLY mode: skip reading actual item data, fill with
defaults
diff --git a/be/src/storage/segment/segment_iterator.cpp
b/be/src/storage/segment/segment_iterator.cpp
index 07b5488e0fe..f7bd652ccf0 100644
--- a/be/src/storage/segment/segment_iterator.cpp
+++ b/be/src/storage/segment/segment_iterator.cpp
@@ -2896,11 +2896,8 @@ void SegmentIterator::_fill_column_nothing() {
for (const auto pair : _vir_cid_to_idx_in_block) {
auto cid = pair.first;
auto pos = pair.second;
- const auto* nothing_col =
-
check_and_get_column<ColumnNothing>(_current_return_columns[cid].get());
- DCHECK(nothing_col != nullptr)
- << fmt::format("ColumnNothing expected, but got {}, cid: {},
pos: {}",
- _current_return_columns[cid]->get_name(), cid,
pos);
+ [[maybe_unused]] const auto* nothing_col =
+ assert_cast<const
ColumnNothing*>(_current_return_columns[cid].get());
_current_return_columns[cid] =
_opts.vir_col_idx_to_type[pos]->create_column();
}
}
diff --git a/be/src/storage/segment/variant/hierarchical_data_iterator.cpp
b/be/src/storage/segment/variant/hierarchical_data_iterator.cpp
index 052f231b27e..cd8cd776967 100644
--- a/be/src/storage/segment/variant/hierarchical_data_iterator.cpp
+++ b/be/src/storage/segment/variant/hierarchical_data_iterator.cpp
@@ -222,7 +222,7 @@ Status HierarchicalDataIterator::_process_nested_columns(
// will type the type of ColumnVariant::NESTED_TYPE, whih is
Nullable<ColumnArray<NULLABLE(ColumnVariant)>>.
for (const auto& entry : nested_subcolumns) {
const auto* base_array =
-
check_and_get_column<ColumnArray>(*remove_nullable(entry.second[0].column));
+ assert_cast<const
ColumnArray*>(remove_nullable(entry.second[0].column).get());
MutableColumnPtr nested_object =
ColumnVariant::create(0, false, base_array->get_data().size());
MutableColumnPtr offset =
base_array->get_offsets_ptr()->assume_mutable();
@@ -237,7 +237,7 @@ Status HierarchicalDataIterator::_process_nested_columns(
subcolumn.path.get_path(), subcolumn.type->get_name());
}
const auto* target_array =
-
check_and_get_column<ColumnArray>(remove_nullable(subcolumn.column).get());
+ assert_cast<const
ColumnArray*>(remove_nullable(subcolumn.column).get());
#ifndef NDEBUG
if (!base_array->has_equal_offsets(*target_array)) {
return Status::InvalidArgument(
diff --git a/be/test/core/column/column_array_test.cpp
b/be/test/core/column/column_array_test.cpp
index e8c0bd44678..7b2ec0a2544 100644
--- a/be/test/core/column/column_array_test.cpp
+++ b/be/test/core/column/column_array_test.cpp
@@ -776,7 +776,7 @@ TEST_F(ColumnArrayTest, MaxArraySizeAsFieldTest) {
cloned->insert(Field::create_field<TYPE_ARRAY>(af));
// get cloned offset size
auto cloned_offset_size =
-
check_and_get_column<ColumnArray>(cloned.get())->get_offsets().back();
+ assert_cast<const
ColumnArray*>(cloned.get())->get_offsets().back();
EXPECT_EQ(cloned_offset_size, start_size + max_array_size_as_field)
<< "cloned offset size is not equal to start size +
max_array_size_as_field";
diff --git a/be/test/core/value/merge_partitioner_test.cpp
b/be/test/core/value/merge_partitioner_test.cpp
index aeb18053645..f2682cf657a 100644
--- a/be/test/core/value/merge_partitioner_test.cpp
+++ b/be/test/core/value/merge_partitioner_test.cpp
@@ -148,9 +148,9 @@ protected:
const ColumnInt8& _get_op_column(const Block& block) const {
const auto& column = block.get_by_position(0).column;
if (auto* nullable_col =
check_and_get_column<ColumnNullable>(column.get())) {
- return
*check_and_get_column<ColumnInt8>(nullable_col->get_nested_column_ptr().get());
+ return *assert_cast<const
ColumnInt8*>(nullable_col->get_nested_column_ptr().get());
}
- return *check_and_get_column<ColumnInt8>(column.get());
+ return *assert_cast<const ColumnInt8*>(column.get());
}
void _build_descriptors() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]