This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 376d54de41 [Chore](function) add check for comparison input type #23330
376d54de41 is described below
commit 376d54de41c60674e47dbb58f9323e0c2e0274a7
Author: Pxl <[email protected]>
AuthorDate: Thu Aug 24 08:28:31 2023 +0800
[Chore](function) add check for comparison input type #23330
---
be/src/vec/functions/functions_comparison.h | 31 +++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/be/src/vec/functions/functions_comparison.h
b/be/src/vec/functions/functions_comparison.h
index 014c5a6c03..e182722d7f 100644
--- a/be/src/vec/functions/functions_comparison.h
+++ b/be/src/vec/functions/functions_comparison.h
@@ -494,12 +494,13 @@ private:
ColumnUInt8::Container& vec_res = c_res->get_data();
vec_res.resize(c0->size());
- if (c0_const)
+ if (c0_const) {
GenericComparisonImpl<Op<int, int>>::constant_vector(*c0, *c1,
vec_res);
- else if (c1_const)
+ } else if (c1_const) {
GenericComparisonImpl<Op<int, int>>::vector_constant(*c0, *c1,
vec_res);
- else
+ } else {
GenericComparisonImpl<Op<int, int>>::vector_vector(*c0, *c1,
vec_res);
+ }
block.replace_by_position(result, std::move(c_res));
}
@@ -590,25 +591,39 @@ public:
execute_num_left_type<Float32>(block, result,
col_left_untyped,
col_right_untyped) ||
execute_num_left_type<Float64>(block, result,
col_left_untyped,
- col_right_untyped)))
-
+ col_right_untyped))) {
return Status::RuntimeError("Illegal column {} of first
argument of function {}",
col_left_untyped->get_name(),
get_name());
- } else if (is_decimal_v2(left_type) || is_decimal_v2(right_type)) {
+ }
+ return Status::OK();
+ }
+ if (is_decimal_v2(left_type) || is_decimal_v2(right_type)) {
if (!allow_decimal_comparison(left_type, right_type)) {
return Status::RuntimeError("No operation {} between {} and
{}", get_name(),
left_type->get_name(),
right_type->get_name());
}
return execute_decimal(block, result, col_with_type_and_name_left,
col_with_type_and_name_right);
- } else if (is_decimal(left_type) || is_decimal(right_type)) {
+ }
+
+ if (is_decimal(left_type) || is_decimal(right_type)) {
if (!allow_decimal_comparison(left_type, right_type)) {
return Status::RuntimeError("No operation {} between {} and
{}", get_name(),
left_type->get_name(),
right_type->get_name());
}
return execute_decimal(block, result, col_with_type_and_name_left,
col_with_type_and_name_right);
- } else if (left_is_string && right_is_string) {
+ }
+
+ if (which_left.idx != which_right.idx) {
+ return Status::InternalError(
+ "comparison must input two same type column or column type
is "
+ "decimalv3/numeric, lhs={}, rhs={}",
+ col_with_type_and_name_left.type->get_name(),
+ col_with_type_and_name_right.type->get_name());
+ }
+
+ if (left_is_string && right_is_string) {
return execute_string(block, result,
col_with_type_and_name_left.column.get(),
col_with_type_and_name_right.column.get());
} else {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]