diff --git a/be/src/vec/functions/function_variant_element.cpp b/be/src/vec/functions/function_variant_element.cpp index faa56ccb1e32f8..22bf45beb5ef97 100644 --- a/be/src/vec/functions/function_variant_element.cpp +++ b/be/src/vec/functions/function_variant_element.cpp @@ -103,11 +103,11 @@ class FunctionVariantElement : public IFunction { static Status get_element_column(const ColumnObject& src, const ColumnPtr& index_column, ColumnPtr* result) { std::string field_name = index_column->get_data_at(0).to_string(); - Defer finalize([&]() { (*result)->assume_mutable()->finalize(); }); if (src.empty()) { *result = ColumnObject::create(true); // src subcolumns empty but src row count may not be 0 (*result)->assume_mutable()->insert_many_defaults(src.size()); + (*result)->assume_mutable()->finalize(); return Status::OK(); } if (src.is_scalar_variant() && @@ -132,6 +132,7 @@ class FunctionVariantElement : public IFunction { } } *result = ColumnObject::create(true, type, std::move(result_column)); + (*result)->assume_mutable()->finalize(); return Status::OK(); } else { auto mutable_src = src.clone_finalized(); @@ -173,6 +174,7 @@ class FunctionVariantElement : public IFunction { result_col->insert_many_defaults(src.size()); } *result = result_col->get_ptr(); + (*result)->assume_mutable()->finalize(); VLOG_DEBUG << "dump new object " << static_cast(result_col.get())->debug_string() << ", path " << path.get_path();