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 <131352377+felixw...@users.noreply.github.com>
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to