From 7550fbaff7d721f1b1b185936a11c63fc67f0a7b Mon Sep 17 00:00:00 2001 From: lihangyu <15605149486@163.com> Date: Wed, 7 Aug 2024 13:46:23 +0800 Subject: [PATCH] =?UTF-8?q?[Fix](Exception)=20throw=20exception=20in=20def?= =?UTF-8?q?er=20may=20result=20std::terminate=20(=E2=80=A6=20(#39007)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pick #38935 --- be/src/vec/functions/function_variant_element.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/be/src/vec/functions/function_variant_element.cpp b/be/src/vec/functions/function_variant_element.cpp index faa56ccb1e..22bf45beb5 100644 --- a/be/src/vec/functions/function_variant_element.cpp +++ b/be/src/vec/functions/function_variant_element.cpp @@ -103,11 +103,11 @@ private: 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 @@ private: } } *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 @@ private: 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();