Skip to content

Commit

Permalink
[fix](func)fix array_with_const with larger than max_array_size (#38152)
Browse files Browse the repository at this point in the history
## Proposed changes
backport: #37495
Issue Number: close #xxx

<!--Describe your changes.-->
  • Loading branch information
amorynan authored Jul 19, 2024
1 parent ffc0d68 commit 947d759
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 5 deletions.
6 changes: 3 additions & 3 deletions be/src/vec/functions/array/function_array_with_constant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ class FunctionArrayWithConstant : public IFunction {
array_sizes.reserve(input_rows_count);
for (size_t i = 0; i < input_rows_count; ++i) {
auto array_size = num->get_int(i);
if (UNLIKELY(array_size < 0)) {
return Status::RuntimeError("Array size can not be negative in function:" +
get_name());
if (UNLIKELY(array_size < 0) || UNLIKELY(array_size > max_array_size_as_field)) {
return Status::RuntimeError("Array size should in range(0, {}) in function: {}",
max_array_size_as_field, get_name());
}
offset += array_size;
offsets.push_back(offset);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
// under the License.

suite("test_array_functions_array_with_const", "p0") {
sql "set enable_nereids_planner=false;"
//array_with_constant
qt_old_sql "SELECT 'array_with_constant';"
order_qt_old_sql "SELECT array_with_constant(3, number) FROM numbers limit 10;"
Expand All @@ -31,7 +32,16 @@ suite("test_array_functions_array_with_const", "p0") {
SELECT array_with_constant(-231.37104, -138);
"""
} catch (Exception ex) {
assertTrue(ex.getMessage().contains("Array size can not be negative in function:array_with_constant"))
assertTrue(ex.getMessage().contains("Array size should in range(0, 1000000) in function"))
}

// -- {server for large array}
try {
sql """
SELECT array_with_constant(1000001, 1);
"""
} catch (Exception ex) {
assertTrue(ex.getMessage().contains("Array size should in range(0, 1000000) in function"))
}


Expand All @@ -53,7 +63,15 @@ suite("test_array_functions_array_with_const", "p0") {
SELECT array_with_constant(-231.37104, -138);
"""
} catch (Exception ex) {
assertTrue(ex.getMessage().contains("Array size can not be negative in function:array_with_constant"))
assertTrue(ex.getMessage().contains("Array size should in range(0, 1000000) in function"))
}

// -- {server for large array}
try {
sql """
SELECT array_with_constant(1000001, 1);
"""
} catch (Exception ex) {
assertTrue(ex.getMessage().contains("Array size should in range(0, 1000000) in function"))
}
}

0 comments on commit 947d759

Please sign in to comment.