This is an automated email from the ASF dual-hosted git repository. kxiao 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 bf50f9fa7f [fix](decimal) fix cast rounding half up with negative number (#22450) bf50f9fa7f is described below commit bf50f9fa7f5422f2f8cdf5ea3e4167744c480f16 Author: Mryange <59914473+mrya...@users.noreply.github.com> AuthorDate: Tue Aug 1 21:47:42 2023 +0800 [fix](decimal) fix cast rounding half up with negative number (#22450) --- be/src/vec/data_types/data_type_decimal.h | 6 +++++- .../data/correctness/test_cast_as_decimalv3.out | 12 ++++++++++++ .../suites/correctness/test_cast_as_decimalv3.groovy | 20 +++++++++++++++++++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/be/src/vec/data_types/data_type_decimal.h b/be/src/vec/data_types/data_type_decimal.h index 21d899e620..7417d884c0 100644 --- a/be/src/vec/data_types/data_type_decimal.h +++ b/be/src/vec/data_types/data_type_decimal.h @@ -505,7 +505,11 @@ void convert_decimal_cols( MaxNativeType multiplier = DataTypeDecimal<MaxFieldType>::get_scale_multiplier(scale_from - scale_to); for (size_t i = 0; i < sz; i++) { - vec_to[i] = (vec_from[i] + multiplier / 2) / multiplier; + if (vec_from[i] >= 0) { + vec_to[i] = (vec_from[i] + multiplier / 2) / multiplier; + } else { + vec_to[i] = (vec_from[i] - multiplier / 2) / multiplier; + } } } diff --git a/regression-test/data/correctness/test_cast_as_decimalv3.out b/regression-test/data/correctness/test_cast_as_decimalv3.out index 9032acc1ee..db702dc9e4 100644 --- a/regression-test/data/correctness/test_cast_as_decimalv3.out +++ b/regression-test/data/correctness/test_cast_as_decimalv3.out @@ -12,3 +12,15 @@ 0.25000 0.20000 +-- !select4 -- +-280.0000 + +-- !select5 -- +-280.0001 + +-- !select6 -- +-280.0000 + +-- !select7 -- +-280.0001 + diff --git a/regression-test/suites/correctness/test_cast_as_decimalv3.groovy b/regression-test/suites/correctness/test_cast_as_decimalv3.groovy index b7e4998a23..a0ddbc9010 100644 --- a/regression-test/suites/correctness/test_cast_as_decimalv3.groovy +++ b/regression-test/suites/correctness/test_cast_as_decimalv3.groovy @@ -30,7 +30,7 @@ suite("test_cast_as_decimalv3") { ); """ sql """ - set enable_nereids_planner=false,enable_fold_constant_by_be = false + set enable_nereids_planner=true,enable_fold_constant_by_be = false """ sql """ INSERT INTO divtest VALUES(1,3.00) @@ -50,4 +50,22 @@ suite("test_cast_as_decimalv3") { qt_select3 """ select 1.0 / val from divtest order by id """ + qt_select4 """ + select cast(-280.00000000 as decimal(16,4)); + """ + qt_select5 """ + select cast(-280.00005000 as decimal(16,4)); + """ + + sql """ + set enable_nereids_planner=false + """ + + + qt_select6 """ + select cast(-280.00000000 as decimal(16,4)); + """ + qt_select7 """ + select cast(-280.00005000 as decimal(16,4)); + """ } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org