From 52592a274df7c29ef11f6c60565f02d7870797a9 Mon Sep 17 00:00:00 2001 From: Mryange <2319153948@qq.com> Date: Thu, 27 Jun 2024 20:36:19 +0800 Subject: [PATCH] upd --- be/src/vec/functions/function_coalesce.cpp | 24 +++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/be/src/vec/functions/function_coalesce.cpp b/be/src/vec/functions/function_coalesce.cpp index 63217c6d6bfd57..096e673a34d39e 100644 --- a/be/src/vec/functions/function_coalesce.cpp +++ b/be/src/vec/functions/function_coalesce.cpp @@ -94,17 +94,21 @@ class FunctionCoalesce : public IFunction { for (size_t i = 0; i < arguments.size(); ++i) { const auto& arg_type = block.get_by_position(arguments[i]).type; - filtered_args.push_back(arguments[i]); - if (!arg_type->is_nullable()) { - if (i == 0) { - block.get_by_position(result).column = - block.get_by_position(arguments[0]) - .column->clone_resized(input_rows_count); - return Status::OK(); - } else { - break; - } + const auto& column = block.get_by_position(arguments[i]).column; + if (!arg_type->is_nullable() && i == 0) { + block.get_by_position(result).column = + block.get_by_position(arguments[0]).column->clone_resized(input_rows_count); + return Status::OK(); } + if (!column->only_null()) { + filtered_args.push_back(arguments[i]); + } + } + + if (filtered_args.empty()) { + block.get_by_position(result).column = + block.get_by_position(arguments[0]).column->clone_resized(input_rows_count); + return Status::OK(); } size_t remaining_rows = input_rows_count;