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/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new e5ed259da6 [fix](regression-test) fix the comparison errors caused by 
inconsistent accuracy (#9931)
e5ed259da6 is described below

commit e5ed259da6b4f401db39f0a4206ba2ba2a048086
Author: Ashin Gau <ashin...@users.noreply.github.com>
AuthorDate: Thu Jun 9 00:35:22 2022 +0800

    [fix](regression-test) fix the comparison errors caused by inconsistent 
accuracy (#9931)
---
 .../org/apache/doris/regression/util/OutputUtils.groovy  | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
index e8f193f376..b220f4deeb 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
@@ -24,6 +24,8 @@ import org.apache.commons.csv.CSVPrinter
 import org.apache.commons.csv.CSVRecord
 import org.apache.commons.io.LineIterator
 
+import java.math.BigDecimal
+import java.math.RoundingMode
 import java.util.function.Function
 import java.sql.ResultSetMetaData
 
@@ -54,7 +56,7 @@ class OutputUtils {
     }
 
     static String checkCell(String info, int line, String expectCell, String 
realCell, String dataType) {
-        if (dataType == "FLOAT" || dataType == "DOUBLE") {
+        if (dataType == "FLOAT" || dataType == "DOUBLE" || dataType == 
"DECIMAL") {
             Boolean expectNull = expectCell.equals("\\\\N")
             Boolean actualNull = realCell.equals("\\\\N")
 
@@ -69,6 +71,18 @@ class OutputUtils {
                 double expectRelativeError = 1e-10
 
                 if(expectRelativeError < realRelativeError) {
+                    // Keep the scale of low precision data to solve TPCH 
cases like:
+                    // "Expect cell is: 0.0395, But real is: 0.039535109"
+                    int expectDecimalPlaces = expectCell.contains(".") ? 
expectCell.length() - expectCell.lastIndexOf(".") - 1 : 0
+                    int realDecimalPlaces = realCell.contains(".") ? 
realCell.length() - realCell.lastIndexOf(".") - 1 : 0
+                    if (expectDecimalPlaces != realDecimalPlaces) {
+                        int lowDecimalPlaces = Math.min(expectDecimalPlaces, 
realDecimalPlaces)
+                        double lowNumber = expectDecimalPlaces < 
realDecimalPlaces ? expectDouble : realDouble
+                        double highNumber = expectDecimalPlaces < 
realDecimalPlaces ? realDouble : expectDouble
+                        if (new 
BigDecimal(highNumber).setScale(lowDecimalPlaces, 
RoundingMode.HALF_UP).doubleValue() == lowNumber) {
+                            return null
+                        }
+                    }
                     return "${info}, line ${line}, ${dataType} result 
mismatch.\nExpect cell is: ${expectCell}\nBut real is: ${realCell}\nrelative 
error is: ${realRelativeError}, bigger than ${expectRelativeError}"
                 }
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to