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 b69b708ea82 [fix](function) the bucket number arg of width_bucket
should be a positive integer value (#37892)
b69b708ea82 is described below
commit b69b708ea821f0251cb5266ee027e7c241c0b30d
Author: Jerry Hu <[email protected]>
AuthorDate: Thu Jul 18 10:51:55 2024 +0800
[fix](function) the bucket number arg of width_bucket should be a positive
integer value (#37892)
## Proposed changes
Issue Number: close #xxx
<!--Describe your changes.-->
---
be/src/vec/functions/function_width_bucket.cpp | 17 +++++++++++------
.../test_width_bucket_function.groovy | 5 +++++
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/be/src/vec/functions/function_width_bucket.cpp
b/be/src/vec/functions/function_width_bucket.cpp
index 193cf832b1a..7f9a3ae31e8 100644
--- a/be/src/vec/functions/function_width_bucket.cpp
+++ b/be/src/vec/functions/function_width_bucket.cpp
@@ -28,6 +28,7 @@
#include "vec/columns/column.h"
#include "vec/columns/column_vector.h"
#include "vec/columns/columns_number.h"
+#include "vec/common/assert_cast.h"
#include "vec/core/block.h"
#include "vec/core/column_numbers.h"
#include "vec/core/column_with_type_and_name.h"
@@ -71,6 +72,12 @@ public:
block.get_by_position(arguments[3]).column->convert_to_full_column_if_const();
int64_t num_buckets = num_buckets_ptr->get_int(0);
+ if (num_buckets <= 0) {
+ return Status::InternalError(
+ "The desired number({}) of buckets must be a positive
integer value.",
+ num_buckets);
+ }
+
auto nested_column_ptr = ColumnInt64::create(input_rows_count, 0);
DataTypePtr expr_type = block.get_by_position(arguments[0]).type;
@@ -86,12 +93,10 @@ private:
void _execute(const IColumn& expr_column, const IColumn& min_value_column,
const IColumn& max_value_column, const int64_t num_buckets,
IColumn& nested_column) const {
- const ColumnType& expr_column_concrete = reinterpret_cast<const
ColumnType&>(expr_column);
- const ColumnType& min_value_column_concrete =
- reinterpret_cast<const ColumnType&>(min_value_column);
- const ColumnType& max_value_column_concrete =
- reinterpret_cast<const ColumnType&>(max_value_column);
- ColumnInt64& nested_column_concrete =
reinterpret_cast<ColumnInt64&>(nested_column);
+ const auto& expr_column_concrete = assert_cast<const
ColumnType&>(expr_column);
+ const auto& min_value_column_concrete = assert_cast<const
ColumnType&>(min_value_column);
+ const auto& max_value_column_concrete = assert_cast<const
ColumnType&>(max_value_column);
+ auto& nested_column_concrete =
assert_cast<ColumnInt64&>(nested_column);
size_t input_rows_count = expr_column.size();
diff --git
a/regression-test/suites/query_p0/sql_functions/width_bucket_fuctions/test_width_bucket_function.groovy
b/regression-test/suites/query_p0/sql_functions/width_bucket_fuctions/test_width_bucket_function.groovy
index c417671e4de..1a455da9244 100644
---
a/regression-test/suites/query_p0/sql_functions/width_bucket_fuctions/test_width_bucket_function.groovy
+++
b/regression-test/suites/query_p0/sql_functions/width_bucket_fuctions/test_width_bucket_function.groovy
@@ -89,4 +89,9 @@ suite("test_width_bucket_function", "arrow_flight_sql") {
qt_select_width_bucket_3 "select width_bucket(10.0,0,11,10);"
qt_select_width_bucket_4 "select width_bucket(10,0,10.1,10);"
qt_select_width_bucket_5 "select width_bucket(10,0,10.10,10);"
+
+ test {
+ sql "select width_bucket(4, 0, 8, 0)"
+ exception "buckets must be a positive integer value"
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]