From 4b3c0d31ebc1d525a2d77b0f5ec93aa6cb49ac1d Mon Sep 17 00:00:00 2001 From: amory Date: Fri, 24 Oct 2025 13:41:47 +0800 Subject: [PATCH] [fix](array) fix arr funcs with ret which BE should eginore precision because of deduce that the FE planner cannot infer (#57018) ### What problem does this PR solve? Issue Number: close #xxx Related PR: #xxx Problem Summary: ### Release note None ### Check List (For Author) - Test - [ ] Regression test - [ ] Unit Test - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test or manual test. Explain why: - [ ] This is a refactor/code format and no logic has been changed. - [ ] Previous test can cover this change. - [ ] No code files have been changed. - [ ] Other reason - Behavior changed: - [ ] No. - [ ] Yes. - Does this need documentation? - [ ] No. - [ ] Yes. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label --- be/src/vec/functions/array/function_array_binary.h | 2 +- be/src/vec/functions/array/function_array_contains_all.cpp | 2 +- be/src/vec/functions/array/function_arrays_overlap.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/be/src/vec/functions/array/function_array_binary.h b/be/src/vec/functions/array/function_array_binary.h index f769657ce8b1d9..3889cd3d5248f0 100644 --- a/be/src/vec/functions/array/function_array_binary.h +++ b/be/src/vec/functions/array/function_array_binary.h @@ -43,7 +43,7 @@ class FunctionArrayBinary : public IFunction { assert_cast(*(arguments[0])).get_nested_type()); auto right_nested_type = remove_nullable( assert_cast(*(arguments[1])).get_nested_type()); - DCHECK(left_nested_type->equals(*right_nested_type)) + DCHECK(left_nested_type->equals_ignore_precision(*right_nested_type)) << "data type " << arguments[0]->get_name() << " not equal with " << arguments[1]->get_name(); return Impl::get_return_type(arguments); diff --git a/be/src/vec/functions/array/function_array_contains_all.cpp b/be/src/vec/functions/array/function_array_contains_all.cpp index 2150b8165b11be..5c3da6c8f80921 100644 --- a/be/src/vec/functions/array/function_array_contains_all.cpp +++ b/be/src/vec/functions/array/function_array_contains_all.cpp @@ -53,7 +53,7 @@ class FunctionArrayContainsAll : public IFunction { assert_cast(*left_data_type).get_nested_type()); auto right_nested_type = remove_nullable( assert_cast(*right_data_type).get_nested_type()); - DCHECK(left_nested_type->equals(*right_nested_type)) + DCHECK(left_nested_type->equals_ignore_precision(*right_nested_type)) << "data type " << arguments[0]->get_name() << " not equal with " << arguments[1]->get_name(); return std::make_shared(); diff --git a/be/src/vec/functions/array/function_arrays_overlap.h b/be/src/vec/functions/array/function_arrays_overlap.h index f5ab63ff3af1b8..220e59b075c57e 100644 --- a/be/src/vec/functions/array/function_arrays_overlap.h +++ b/be/src/vec/functions/array/function_arrays_overlap.h @@ -151,7 +151,7 @@ class FunctionArraysOverlap : public IFunction { assert_cast(*left_data_type).get_nested_type()); auto right_nested_type = remove_nullable( assert_cast(*right_data_type).get_nested_type()); - DCHECK(left_nested_type->equals(*right_nested_type)) + DCHECK(left_nested_type->equals_ignore_precision(*right_nested_type)) << "data type " << arguments[0]->get_name() << " not equal with " << arguments[1]->get_name(); return make_nullable(std::make_shared());