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 37ed7ad6e15 [fix](delete) fix the error message for valid decimal data
(#36802)
37ed7ad6e15 is described below
commit 37ed7ad6e15e1246849ca6442a34a1eb41a38332
Author: lw112 <[email protected]>
AuthorDate: Fri Jul 12 09:33:59 2024 +0800
[fix](delete) fix the error message for valid decimal data (#36802)
## Proposed changes
Issue Number: close #36775
<!--Describe your changes.-->
---
be/src/olap/utils.cpp | 5 ++--
regression-test/data/delete_p0/test_delete.out | 2 ++
.../suites/delete_p0/test_delete.groovy | 28 ++++++++++++++++++++++
3 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/be/src/olap/utils.cpp b/be/src/olap/utils.cpp
index 49c1d53ae35..019a2f606ce 100644
--- a/be/src/olap/utils.cpp
+++ b/be/src/olap/utils.cpp
@@ -546,7 +546,8 @@ bool valid_decimal(const std::string& value_str, const
uint32_t precision, const
}
size_t number_length = value_str.size();
- if (value_str[0] == '-') {
+ bool is_negative = value_str[0] == '-';
+ if (is_negative) {
--number_length;
}
@@ -557,7 +558,7 @@ bool valid_decimal(const std::string& value_str, const
uint32_t precision, const
integer_len = number_length;
fractional_len = 0;
} else {
- integer_len = point_pos;
+ integer_len = point_pos - (is_negative ? 1 : 0);
fractional_len = number_length - point_pos - 1;
}
diff --git a/regression-test/data/delete_p0/test_delete.out
b/regression-test/data/delete_p0/test_delete.out
index becddb7d97b..33c6b773f9b 100644
--- a/regression-test/data/delete_p0/test_delete.out
+++ b/regression-test/data/delete_p0/test_delete.out
@@ -148,3 +148,5 @@ ccc ccc
39 40 42 43 131.200 s o 2023-02-10
2023-02-10T00:01:02 false 22236.106 nn
43 44 46 47 135.200 g t 2023-02-14
2023-02-14T00:01:02 false 22240.106 rr
+-- !check_decimal --
+true -1.0 10
\ No newline at end of file
diff --git a/regression-test/suites/delete_p0/test_delete.groovy
b/regression-test/suites/delete_p0/test_delete.groovy
index 62553571357..a73755d2ff5 100644
--- a/regression-test/suites/delete_p0/test_delete.groovy
+++ b/regression-test/suites/delete_p0/test_delete.groovy
@@ -517,4 +517,32 @@ suite("test_delete") {
sql "delete from table_bitmap where user_id is null"
exception "Can not apply delete condition to column type: BITMAP"
}
+
+ // delete decimal
+ sql "drop table if exists table_decimal"
+ sql """
+ CREATE TABLE table_decimal (
+ `k1` BOOLEAN NOT NULL,
+ `k2` DECIMAL(17, 1) NOT NULL,
+ `k3` INT NOT NULL
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`k1`,`k2`,`k3`)
+ DISTRIBUTED BY HASH(`k1`,`k2`,`k3`) BUCKETS 4
+ PROPERTIES (
+ "replication_num" = "1",
+ "disable_auto_compaction" = "false"
+ );
+ """
+ sql """
+ insert into table_decimal values
+ (false, '-9999782574499444.2', -20),
+ (true, '-1', 10);
+ """
+
+ sql """
+ delete from table_decimal where k1 = false and k2 =
'-9999782574499444.2' and k3 = '-20';
+ """
+ qt_check_decimal """
+ select * from table_decimal;
+ """
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]