From 1ebb54afdc331cdef7d02a66212a2f2b69413268 Mon Sep 17 00:00:00 2001 From: TengJianPing <18241664+jacktengg@users.noreply.github.com> Date: Tue, 21 Nov 2023 18:36:33 +0800 Subject: [PATCH] [fix](null equal) fix coredump of pushing eq_for_null (#27341) --- be/src/pipeline/exec/scan_operator.cpp | 2 +- be/src/vec/exec/scan/vscan_node.cpp | 2 +- regression-test/data/correctness_p0/test_null_equal.out | 3 +++ regression-test/suites/correctness_p0/test_null_equal.groovy | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/be/src/pipeline/exec/scan_operator.cpp b/be/src/pipeline/exec/scan_operator.cpp index 85ccf8620c..fbbf2e05d7 100644 --- a/be/src/pipeline/exec/scan_operator.cpp +++ b/be/src/pipeline/exec/scan_operator.cpp @@ -945,7 +945,7 @@ Status ScanLocalState::_normalize_noneq_binary_predicate( DCHECK(expr->children().size() == 2); auto noneq_checker = [](const std::string& fn_name) { - return fn_name != "ne" && fn_name != "eq"; + return fn_name != "ne" && fn_name != "eq" && fn_name != "eq_for_null"; }; StringRef value; int slot_ref_child = -1; diff --git a/be/src/vec/exec/scan/vscan_node.cpp b/be/src/vec/exec/scan/vscan_node.cpp index d711aa43b4..305bafe10f 100644 --- a/be/src/vec/exec/scan/vscan_node.cpp +++ b/be/src/vec/exec/scan/vscan_node.cpp @@ -970,7 +970,7 @@ Status VScanNode::_normalize_noneq_binary_predicate(VExpr* expr, VExprContext* e DCHECK(expr->children().size() == 2); auto noneq_checker = [](const std::string& fn_name) { - return fn_name != "ne" && fn_name != "eq"; + return fn_name != "ne" && fn_name != "eq" && fn_name != "eq_for_null"; }; StringRef value; int slot_ref_child = -1; diff --git a/regression-test/data/correctness_p0/test_null_equal.out b/regression-test/data/correctness_p0/test_null_equal.out index 39d7408727..2c927e4744 100644 --- a/regression-test/data/correctness_p0/test_null_equal.out +++ b/regression-test/data/correctness_p0/test_null_equal.out @@ -194,3 +194,6 @@ false 2 2 3 3 +-- !test7 -- +1 + diff --git a/regression-test/suites/correctness_p0/test_null_equal.groovy b/regression-test/suites/correctness_p0/test_null_equal.groovy index a9c9ea5ca0..653dc59e90 100644 --- a/regression-test/suites/correctness_p0/test_null_equal.groovy +++ b/regression-test/suites/correctness_p0/test_null_equal.groovy @@ -70,5 +70,8 @@ suite("test_null_equal") { qt_test6 "select * from test_eq_for_null_nullable a, test_eq_for_null_nullable2 b where a.k1 <=> b.k1 order by 1;" + qt_test7 "select * from test_eq_for_null_nullable2 where k1 <=> 1 order by 1;" + + } \ No newline at end of file