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

morrysnow pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 48b8aed44f7 [feature](Nereids) support datev1 and datetimev1 (#28581) 
(#28623)
48b8aed44f7 is described below

commit 48b8aed44f738664f1cbdb23970b261aa9cbd43e
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Thu Dec 21 12:24:51 2023 +0800

    [feature](Nereids) support datev1 and datetimev1 (#28581) (#28623)
    
    pick from master
    PR #28581
    commit ddba98159e246d3439bf1cbdd727d8d7fadf8a63
---
 .../antlr4/org/apache/doris/nereids/DorisParser.g4 |  2 +-
 .../org/apache/doris/nereids/types/DataType.java   | 11 +++++++++++
 .../doris/nereids/parser/NereidsParserTest.java    | 23 ++++++++++++++++++++++
 3 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 
b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
index 8c9ece2799f..ec4b2672c6d 100644
--- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
+++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
@@ -440,7 +440,7 @@ specifiedPartition
 constant
     : NULL                                                                     
                #nullLiteral
     | interval                                                                 
                #intervalLiteral
-    | type=(DATE | DATEV1 | DATEV2 | TIMESTAMP) STRING_LITERAL                 
                         #typeConstructor
+    | type=(DATE | DATEV1 | DATEV2 | TIMESTAMP) STRING_LITERAL                 
                #typeConstructor
     | number                                                                   
                #numericLiteral
     | booleanValue                                                             
                #booleanLiteral
     | STRING_LITERAL                                                           
                #stringLiteral
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
index 9967e5cf0b6..7baa65d2647 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java
@@ -207,6 +207,8 @@ public abstract class DataType implements AbstractDataType {
             case "date":
                 return Config.enable_date_conversion && tryConvert ? 
DateV2Type.INSTANCE
                         : DateType.INSTANCE;
+            case "datev1":
+                return DateType.INSTANCE;
             case "datev2":
                 return DateV2Type.INSTANCE;
             case "time":
@@ -222,6 +224,15 @@ public abstract class DataType implements AbstractDataType 
{
                     default:
                         throw new AnalysisException("Nereids do not support 
type: " + type);
                 }
+            case "datetimev1":
+                switch (types.size()) {
+                    case 1:
+                        return DateTimeType.INSTANCE;
+                    case 2:
+                        throw new AnalysisException("Nereids do not support 
datetimev1 type with precision");
+                    default:
+                        throw new AnalysisException("Nereids do not support 
type: " + type);
+                }
             case "datetimev2":
                 switch (types.size()) {
                     case 1:
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
index d3064bde012..128569af31b 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/parser/NereidsParserTest.java
@@ -21,6 +21,7 @@ import org.apache.doris.analysis.StatementBase;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.Pair;
 import org.apache.doris.nereids.StatementContext;
+import org.apache.doris.nereids.exceptions.AnalysisException;
 import org.apache.doris.nereids.exceptions.ParseException;
 import org.apache.doris.nereids.glue.LogicalPlanAdapter;
 import org.apache.doris.nereids.trees.expressions.Cast;
@@ -36,6 +37,8 @@ import 
org.apache.doris.nereids.trees.plans.logical.LogicalCTE;
 import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
 import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
 import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
+import org.apache.doris.nereids.types.DateTimeType;
+import org.apache.doris.nereids.types.DateType;
 import org.apache.doris.nereids.types.DecimalV2Type;
 import org.apache.doris.nereids.types.DecimalV3Type;
 
@@ -261,6 +264,26 @@ public class NereidsParserTest extends ParserTestBase {
         Assertions.assertEquals(doubleCount, Config.enable_decimal_conversion 
? 0 : 1);
     }
 
+    @Test
+    public void testDatev1() {
+        String dv1 = "SELECT CAST('2023-12-18' AS DATEV1) FROM t";
+        NereidsParser nereidsParser = new NereidsParser();
+        LogicalPlan logicalPlan = (LogicalPlan) 
nereidsParser.parseSingle(dv1).child(0);
+        Assertions.assertEquals(DateType.INSTANCE, 
logicalPlan.getExpressions().get(0).getDataType());
+    }
+
+    @Test
+    public void testDatetimev1() {
+        String dtv1 = "SELECT CAST('2023-12-18' AS DATETIMEV1) FROM t";
+        NereidsParser nereidsParser = new NereidsParser();
+        LogicalPlan logicalPlan = (LogicalPlan) 
nereidsParser.parseSingle(dtv1).child(0);
+        Assertions.assertEquals(DateTimeType.INSTANCE, 
logicalPlan.getExpressions().get(0).getDataType());
+
+        String wrongDtv1 = "SELECT CAST('2023-12-18' AS DATETIMEV1(2))";
+        Assertions.assertThrows(AnalysisException.class, () -> 
nereidsParser.parseSingle(wrongDtv1).child(0));
+
+    }
+
     @Test
     public void parseSetOperation() {
         String union = "select * from t1 union select * from t2 union all 
select * from t3";


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

Reply via email to