You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by li...@apache.org on 2020/04/03 05:19:37 UTC

[incubator-doris] 01/01: Fix cast date type return wrong result (#3214)

This is an automated email from the ASF dual-hosted git repository.

lichaoyong pushed a commit to branch branch-0.12
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git

commit 2c8c7e7d5934cce4d89e8a9cb0096a48bb94ab5f
Author: HangyuanLiu <46...@qq.com>
AuthorDate: Fri Apr 3 12:08:18 2020 +0800

    Fix cast date type return wrong result (#3214)
    
    We have multiple date type, and we also need to cast between different date types.
    If not cast, it will cause problems when binarypredicate
---
 .../java/org/apache/doris/analysis/DateLiteral.java   |  7 +++++++
 .../org/apache/doris/analysis/DateLiteralTest.java    | 19 +++++++++++++++++++
 gensrc/script/gen_build_version.sh                    |  2 +-
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java b/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java
index cce2ad8..db0631a 100644
--- a/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java
@@ -320,6 +320,13 @@ public class DateLiteral extends LiteralExpr {
     @Override
     protected Expr uncheckedCastTo(Type targetType) throws AnalysisException {
         if (targetType.isDateType()) {
+            if (targetType.equals(Type.DATE)) {
+                this.castToDate();                            
+            } else if (targetType.equals(Type.DATETIME)) {
+                this.type = Type.DATETIME;                            
+            } else {
+                throw new AnalysisException("Error date literal type : " + type);
+            }
             return this;
         } else if (targetType.isStringType()) {
             return new StringLiteral(getStringValue());
diff --git a/fe/src/test/java/org/apache/doris/analysis/DateLiteralTest.java b/fe/src/test/java/org/apache/doris/analysis/DateLiteralTest.java
index 2121131..02b165b 100644
--- a/fe/src/test/java/org/apache/doris/analysis/DateLiteralTest.java
+++ b/fe/src/test/java/org/apache/doris/analysis/DateLiteralTest.java
@@ -55,4 +55,23 @@ public class DateLiteralTest {
         }
         Assert.assertFalse(hasException);
     }
+
+    @Test
+    public void uncheckedCastTo() {
+        boolean hasException = false;
+        try {
+            DateLiteral literal = new DateLiteral("1997-10-07", Type.DATE);
+            Expr castToExpr = literal.uncheckedCastTo(Type.DATETIME);
+            Assert.assertTrue(castToExpr instanceof DateLiteral);
+            Assert.assertEquals(castToExpr.type, Type.DATETIME);
+
+            DateLiteral literal2 = new DateLiteral("1997-10-07 12:23:23", Type.DATETIME);
+            Expr castToExpr2 = literal2.uncheckedCastTo(Type.DATETIME);
+            Assert.assertTrue(castToExpr2 instanceof DateLiteral);
+        } catch (AnalysisException e) {
+            e.printStackTrace();
+            hasException = true;
+        }
+        Assert.assertFalse(hasException);
+    }
 }
diff --git a/gensrc/script/gen_build_version.sh b/gensrc/script/gen_build_version.sh
index 21bb1b8..0b3550b 100755
--- a/gensrc/script/gen_build_version.sh
+++ b/gensrc/script/gen_build_version.sh
@@ -25,7 +25,7 @@
 # contains the build version based on the git hash or svn revision.
 ##############################################################
 
-build_version="trunk"
+build_version="branch-0.12"
 
 unset LANG
 unset LC_CTYPE


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