Skip to content

Commit

Permalink
[fix](function) the bucket number arg of width_bucket should be a pos…
Browse files Browse the repository at this point in the history
…itive integer value
  • Loading branch information
mrhhsg committed Jul 16, 2024
1 parent 43895d7 commit 9349284
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
14 changes: 10 additions & 4 deletions be/src/vec/functions/function_width_bucket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@ class FunctionWidthBucket : public IFunction {
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;

Expand All @@ -86,12 +92,12 @@ class FunctionWidthBucket : public IFunction {
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 =
const auto& expr_column_concrete = reinterpret_cast<const ColumnType&>(expr_column);
const auto& min_value_column_concrete =
reinterpret_cast<const ColumnType&>(min_value_column);
const ColumnType& max_value_column_concrete =
const auto& max_value_column_concrete =
reinterpret_cast<const ColumnType&>(max_value_column);
ColumnInt64& nested_column_concrete = reinterpret_cast<ColumnInt64&>(nested_column);
auto& nested_column_concrete = reinterpret_cast<ColumnInt64&>(nested_column);

size_t input_rows_count = expr_column.size();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}

0 comments on commit 9349284

Please sign in to comment.