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 d83c11a032 [regression](datev2) add schema change cases for 
datev2/datetimev2 (#11924)
d83c11a032 is described below

commit d83c11a0323fdd05dfe7af4d4a95558c6cdf65b4
Author: Gabriel <[email protected]>
AuthorDate: Fri Aug 19 21:29:24 2022 +0800

    [regression](datev2) add schema change cases for datev2/datetimev2 (#11924)
---
 .../org/apache/doris/analysis/DateLiteral.java     |   4 +
 .../data/index_p0/test_bitmap_index.out            |  32 ++-
 .../test_schema_change_datev2_with_delete.out      |  81 +++++++
 .../datev2/test_agg_keys_schema_change_datev2.out  |  82 +++++++
 .../datev2/test_dup_keys_schema_change_datev2.out  |  70 ++++++
 .../suites/index_p0/test_bitmap_index.groovy       |  42 +++-
 .../test_schema_change_datev2_with_delete.groovy   | 117 +++++++++
 .../test_agg_keys_schema_change_datev2.groovy      | 264 +++++++++++++++++++++
 .../test_dup_keys_schema_change_datev2.groovy      | 203 ++++++++++++++++
 9 files changed, 882 insertions(+), 13 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
index 96ab5edd06..91a17cd20c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
@@ -431,6 +431,10 @@ public class DateLiteral extends LiteralExpr {
             minute = getOrDefault(dateTime, ChronoField.MINUTE_OF_HOUR, 0);
             second = getOrDefault(dateTime, ChronoField.SECOND_OF_MINUTE, 0);
             microsecond = getOrDefault(dateTime, ChronoField.MICRO_OF_SECOND, 
0);
+            if (microsecond != 0 && type.isDatetime()) {
+                LOG.warn("Microseconds is not supported by Datetime type and 
hence is ignored."
+                        + "Please change to Datetimev2 to use it.");
+            }
             this.type = type;
             if (checkRange() || checkDate()) {
                 throw new AnalysisException("Datetime value is out of range");
diff --git a/regression-test/data/index_p0/test_bitmap_index.out 
b/regression-test/data/index_p0/test_bitmap_index.out
index 2ab219dcd8..3b37588e29 100644
--- a/regression-test/data/index_p0/test_bitmap_index.out
+++ b/regression-test/data/index_p0/test_bitmap_index.out
@@ -11,6 +11,10 @@ k8   DATETIME        Yes     false   \N      NONE
 k9     LARGEINT        Yes     false   \N      NONE
 k10    DECIMAL(9,0)    Yes     false   \N      NONE
 k11    BOOLEAN Yes     false   \N      NONE
+k12    DATEV2  Yes     false   \N      NONE
+k13    DATETIMEV2(0)   Yes     false   \N      NONE
+k14    DATETIMEV2(3)   Yes     false   \N      NONE
+k15    DATETIMEV2(6)   Yes     false   \N      NONE
 
 -- !sql --
 default_cluster:regression_test_index_p0.test_bitmap_index_dup         index1  
        k1                                              BITMAP  
@@ -24,9 +28,13 @@ 
default_cluster:regression_test_index_p0.test_bitmap_index_dup               
index8          k8
 default_cluster:regression_test_index_p0.test_bitmap_index_dup         index9  
        k9                                              BITMAP  
 default_cluster:regression_test_index_p0.test_bitmap_index_dup         index10 
        k10                                             BITMAP  
 default_cluster:regression_test_index_p0.test_bitmap_index_dup         index11 
        k11                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_dup         index12 
        k12                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_dup         index13 
        k13                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_dup         index14 
        k14                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_dup         index15 
        k15                                             BITMAP  
 
 -- !sql --
-1      1       1       1       1       1       2022-05-31      
2022-05-31T10:00        1       1       true
+1      1       1       1       1       1       2022-05-31      
2022-05-31T10:00        1       1       true    2022-05-31      
2022-05-31T10:00        2022-05-31T10:00:00.111 2022-05-31T10:00:00.111111
 
 -- !sql --
 k1     TINYINT Yes     true    \N      
@@ -40,6 +48,10 @@ k8   DATETIME        Yes     true    \N
 k9     LARGEINT        Yes     true    \N      
 k10    DECIMAL(9,0)    Yes     true    \N      
 k11    BOOLEAN Yes     true    \N      
+k12    DATEV2  Yes     true    \N      
+k13    DATETIMEV2(0)   Yes     true    \N      
+k14    DATETIMEV2(3)   Yes     true    \N      
+k15    DATETIMEV2(6)   Yes     true    \N      
 v1     INT     Yes     false   \N      SUM
 
 -- !sql --
@@ -54,9 +66,13 @@ 
default_cluster:regression_test_index_p0.test_bitmap_index_agg               
index8          k8
 default_cluster:regression_test_index_p0.test_bitmap_index_agg         index9  
        k9                                              BITMAP  
 default_cluster:regression_test_index_p0.test_bitmap_index_agg         index10 
        k10                                             BITMAP  
 default_cluster:regression_test_index_p0.test_bitmap_index_agg         index11 
        k11                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_agg         index12 
        k12                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_agg         index13 
        k13                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_agg         index14 
        k14                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_agg         index15 
        k15                                             BITMAP  
 
 -- !sql --
-1      1       1       1       1       1       2022-05-31      
2022-05-31T10:00        1       1       true    1
+1      1       1       1       1       1       2022-05-31      
2022-05-31T10:00        1       1       true    2022-05-31      
2022-05-31T10:00        2022-05-31T10:00:00.111 2022-05-31T10:00:00.111111      
1
 
 -- !sql --
 k1     TINYINT Yes     true    \N      
@@ -70,6 +86,10 @@ k8   DATETIME        Yes     true    \N
 k9     LARGEINT        Yes     true    \N      
 k10    DECIMAL(9,0)    Yes     true    \N      
 k11    BOOLEAN Yes     true    \N      
+k12    DATEV2  Yes     false   \N      REPLACE
+k13    DATETIMEV2(0)   Yes     false   \N      REPLACE
+k14    DATETIMEV2(3)   Yes     false   \N      REPLACE
+k15    DATETIMEV2(6)   Yes     false   \N      REPLACE
 v1     INT     Yes     false   \N      REPLACE
 
 -- !sql --
@@ -84,8 +104,12 @@ 
default_cluster:regression_test_index_p0.test_bitmap_index_unique           
index8          k8
 default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index9          k9                                              BITMAP  
 default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index10         k10                                             BITMAP  
 default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index11         k11                                             BITMAP  
-default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index12         v1                                              BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index12         k12                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index13         k13                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index14         k14                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index15         k15                                             BITMAP  
+default_cluster:regression_test_index_p0.test_bitmap_index_unique              
index16         v1                                              BITMAP  
 
 -- !sql --
-1      1       1       1       1       1       2022-05-31      
2022-05-31T10:00        1       1       true    1
+1      1       1       1       1       1       2022-05-31      
2022-05-31T10:00        1       1       true    2022-05-31      
2022-05-31T10:00        2022-05-31T10:00:00.111 2022-05-31T10:00:00.111111      
1
 
diff --git 
a/regression-test/data/schema_change/test_schema_change_datev2_with_delete.out 
b/regression-test/data/schema_change/test_schema_change_datev2_with_delete.out
new file mode 100644
index 0000000000..2ef72df7c7
--- /dev/null
+++ 
b/regression-test/data/schema_change/test_schema_change_datev2_with_delete.out
@@ -0,0 +1,81 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
diff --git 
a/regression-test/data/schema_change_p0/datev2/test_agg_keys_schema_change_datev2.out
 
b/regression-test/data/schema_change_p0/datev2/test_agg_keys_schema_change_datev2.out
new file mode 100644
index 0000000000..c2400ee415
--- /dev/null
+++ 
b/regression-test/data/schema_change_p0/datev2/test_agg_keys_schema_change_datev2.out
@@ -0,0 +1,82 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-01      2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-01      2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-01      2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-01      2022-01-05      
2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-01      2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-01      2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-01      2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-01      2022-01-05      
2022-01-05T11:11:11
+
+-- !sql --
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-01T11:11:11     2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-01T11:11:11     2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-01T11:11:11     2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01T11:11:11     2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-01T11:11:11     2022-01-05      
2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-01T11:11:11     2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-01T11:11:11     2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-01T11:11:11     2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01T11:11:11     2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-01T11:11:11     2022-01-05      
2022-01-05T11:11:11
+
+-- !sql --
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-01T11:11:11.111 2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-01T11:11:11.111 2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-01T11:11:11.111 2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01T11:11:11.111 2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-01T11:11:11.111 2022-01-05      
2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-01T11:11:11.111 2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-01T11:11:11.111 2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-01T11:11:11.111 2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01T11:11:11.111 2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-01T11:11:11.111 2022-01-05      
2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-01T11:11:11.111 2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-01T11:11:11.111 2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-01T11:11:11.111 2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01T11:11:11.111 2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-01T11:11:11.111 2022-01-05      
2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-02T11:11:11.222 2022-01-06      
2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02T11:11:11.222 2022-01-02      
2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-02T11:11:11.222 2022-01-03      
2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-02T11:11:11.222 2022-01-01      
2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-02T11:11:11.222 2022-01-05      
2022-01-05T11:11:11
+
diff --git 
a/regression-test/data/schema_change_p0/datev2/test_dup_keys_schema_change_datev2.out
 
b/regression-test/data/schema_change_p0/datev2/test_dup_keys_schema_change_datev2.out
new file mode 100644
index 0000000000..de1946b723
--- /dev/null
+++ 
b/regression-test/data/schema_change_p0/datev2/test_dup_keys_schema_change_datev2.out
@@ -0,0 +1,70 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+2022-01-01     2022-01-06T11:11:11     2022-01-06      2022-01-06T11:11:11
+2022-01-02     2022-01-02T11:11:11     2022-01-02      2022-01-02T11:11:11
+2022-01-03     2022-01-03T11:11:11     2022-01-03      2022-01-01T11:11:11
+2022-01-04     2022-01-04T11:11:11     2022-01-01      2022-01-04T11:11:11
+2022-01-05     2022-01-01T11:11:11     2022-01-05      2022-01-05T11:11:11
+
+-- !sql --
+
diff --git a/regression-test/suites/index_p0/test_bitmap_index.groovy 
b/regression-test/suites/index_p0/test_bitmap_index.groovy
index 6ee8486e82..2267ef38dc 100644
--- a/regression-test/suites/index_p0/test_bitmap_index.groovy
+++ b/regression-test/suites/index_p0/test_bitmap_index.groovy
@@ -34,7 +34,11 @@ suite("test_bitmap_index") {
                 k8 DATETIME,
                 k9 LARGEINT,
                k10 DECIMAL,
-               k11 BOOLEAN
+               k11 BOOLEAN,
+               k12 DATEV2,
+               k13 DATETIMEV2,
+               k14 DATETIMEV2(3),
+               k15 DATETIMEV2(6)
             )
             DISTRIBUTED BY HASH(k1) BUCKETS 5 properties("replication_num" = 
"1");
         """
@@ -51,7 +55,11 @@ suite("test_bitmap_index") {
                 ADD INDEX index8 (k8) USING BITMAP,
                 ADD INDEX index9 (k9) USING BITMAP,
                 ADD INDEX index10 (k10) USING BITMAP,
-                ADD INDEX index11 (k11) USING BITMAP;
+                ADD INDEX index11 (k11) USING BITMAP,
+                ADD INDEX index12 (k12) USING BITMAP,
+                ADD INDEX index13 (k13) USING BITMAP,
+                ADD INDEX index14 (k14) USING BITMAP,
+                ADD INDEX index15 (k15) USING BITMAP;
         """
     int max_try_secs = 60
     while (max_try_secs--) {
@@ -67,7 +75,7 @@ suite("test_bitmap_index") {
         }
     }
 
-    sql "insert into ${tbName1} 
values(1,1,1,1,'1','1','2022-05-31','2022-05-31 10:00:00',1,1.0,1);"
+    sql "insert into ${tbName1} 
values(1,1,1,1,'1','1','2022-05-31','2022-05-31 
10:00:00',1,1.0,1,'2022-05-31','2022-05-31 10:00:00.111111','2022-05-31 
10:00:00.111111','2022-05-31 10:00:00.111111');"
     qt_sql "desc ${tbName1};"
     qt_sql "SHOW INDEX FROM ${tbName1};"
     qt_sql "select * from ${tbName1};"
@@ -104,9 +112,13 @@ suite("test_bitmap_index") {
                 k9 LARGEINT,
                k10 DECIMAL,
                k11 BOOLEAN,
+               k12 DATEV2,
+               k13 DATETIMEV2,
+               k14 DATETIMEV2(3),
+               k15 DATETIMEV2(6),
                 v1 INT SUM
             )
-            AGGREGATE KEY(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11)
+            AGGREGATE KEY(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15)
             DISTRIBUTED BY HASH(k1) BUCKETS 5 properties("replication_num" = 
"1");
         """
 
@@ -122,7 +134,11 @@ suite("test_bitmap_index") {
                 ADD INDEX index8 (k8) USING BITMAP,
                 ADD INDEX index9 (k9) USING BITMAP,
                 ADD INDEX index10 (k10) USING BITMAP,
-                ADD INDEX index11 (k11) USING BITMAP;
+                ADD INDEX index11 (k11) USING BITMAP,
+                ADD INDEX index12 (k12) USING BITMAP,
+                ADD INDEX index13 (k13) USING BITMAP,
+                ADD INDEX index14 (k14) USING BITMAP,
+                ADD INDEX index15 (k15) USING BITMAP;
         """
     max_try_secs = 60
     while (max_try_secs--) {
@@ -138,11 +154,11 @@ suite("test_bitmap_index") {
         }
     }
     test{
-        sql "ALTER TABLE ${tbName2} ADD INDEX index12 (v1) USING BITMAP;"
+        sql "ALTER TABLE ${tbName2} ADD INDEX index16 (v1) USING BITMAP;"
         exception "errCode = 2, detailMessage = BITMAP index only used in 
columns of DUP_KEYS/UNIQUE_KEYS table"
     }
 
-    sql "insert into ${tbName2} 
values(1,1,1,1,'1','1','2022-05-31','2022-05-31 10:00:00',1,1.0,1,1);"
+    sql "insert into ${tbName2} 
values(1,1,1,1,'1','1','2022-05-31','2022-05-31 
10:00:00',1,1.0,1,'2022-05-31','2022-05-31 10:00:00.111111','2022-05-31 
10:00:00.111111','2022-05-31 10:00:00.111111',1);"
     qt_sql "desc ${tbName2};"
     qt_sql "SHOW INDEX FROM ${tbName2};"
     qt_sql "select * from ${tbName2};"
@@ -178,6 +194,10 @@ suite("test_bitmap_index") {
                 k9 LARGEINT,
                k10 DECIMAL,
                k11 BOOLEAN,
+               k12 DATEV2,
+               k13 DATETIMEV2,
+               k14 DATETIMEV2(3),
+               k15 DATETIMEV2(6),
                v1  INT
             )
             UNIQUE KEY(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11)
@@ -197,7 +217,11 @@ suite("test_bitmap_index") {
                 ADD INDEX index9 (k9) USING BITMAP,
                 ADD INDEX index10 (k10) USING BITMAP,
                 ADD INDEX index11 (k11) USING BITMAP,
-                ADD INDEX index12 (v1) USING BITMAP;
+                ADD INDEX index12 (k12) USING BITMAP,
+                ADD INDEX index13 (k13) USING BITMAP,
+                ADD INDEX index14 (k14) USING BITMAP,
+                ADD INDEX index15 (k15) USING BITMAP,
+                ADD INDEX index16 (v1) USING BITMAP;
         """
     max_try_secs = 60
     while (max_try_secs--) {
@@ -213,7 +237,7 @@ suite("test_bitmap_index") {
         }
     }
 
-    sql "insert into ${tbName3} 
values(1,1,1,1,'1','1','2022-05-31','2022-05-31 10:00:00',1,1.0,1,1);"
+    sql "insert into ${tbName3} 
values(1,1,1,1,'1','1','2022-05-31','2022-05-31 
10:00:00',1,1.0,1,'2022-05-31','2022-05-31 10:00:00.111111','2022-05-31 
10:00:00.111111','2022-05-31 10:00:00.111111',1);"
     qt_sql "desc ${tbName3};"
     qt_sql "SHOW INDEX FROM ${tbName3};"
     qt_sql "select * from ${tbName3};"
diff --git 
a/regression-test/suites/schema_change/test_schema_change_datev2_with_delete.groovy
 
b/regression-test/suites/schema_change/test_schema_change_datev2_with_delete.groovy
new file mode 100644
index 0000000000..27dee3ff0a
--- /dev/null
+++ 
b/regression-test/suites/schema_change/test_schema_change_datev2_with_delete.groovy
@@ -0,0 +1,117 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_schema_change_datev2_with_delete") {
+    def tbName = "test_schema_change_datev2_with_delete"
+    def getJobState = { tableName ->
+         def jobStateResult = sql """  SHOW ALTER TABLE COLUMN WHERE 
IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """
+         return jobStateResult[0][9]
+    }
+
+    sql """ DROP TABLE IF EXISTS ${tbName} FORCE"""
+    // Create table and disable light weight schema change
+    sql """
+           CREATE TABLE IF NOT EXISTS ${tbName}
+           (
+               `datek1` date DEFAULT '2022-01-01',
+               `datek2` datetime DEFAULT '2022-01-01 11:11:11',
+               `datev1` date DEFAULT '2022-01-01',
+               `datev2` datetime DEFAULT '2022-01-01 11:11:11'
+           )
+           DUPLICATE  KEY(`datek1`,`datek2`)
+           DISTRIBUTED BY HASH(`datek1`) BUCKETS 1
+           PROPERTIES("replication_num" = "1", "light_schema_change" = 
"false");
+        """
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ alter table ${tbName} modify column `datev1` datev2 DEFAULT 
'2022-01-01' """
+    int max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ alter  table ${tbName} modify column `datev2` datetimev2 DEFAULT 
'2022-01-01 11:11:11' """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ alter  table ${tbName} modify column `datev2` datetimev2(3) 
DEFAULT '2022-01-01 11:11:11' """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ delete from ${tbName} where `datev1`='2022-01-02';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ delete from ${tbName} where `datev2`='2022-01-04 11:11:11.111';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ delete from ${tbName} where `datev2`='2022-01-04 11:11:11';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ delete from ${tbName} where `datev1`='2022-01-01';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ delete from ${tbName} where `datev2`='2022-01-01 11:11:11.111';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ delete from ${tbName} where `datev2`='2022-01-01 11:11:11';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ DROP TABLE  ${tbName} force"""
+}
diff --git 
a/regression-test/suites/schema_change_p0/datev2/test_agg_keys_schema_change_datev2.groovy
 
b/regression-test/suites/schema_change_p0/datev2/test_agg_keys_schema_change_datev2.groovy
new file mode 100644
index 0000000000..6784c533a0
--- /dev/null
+++ 
b/regression-test/suites/schema_change_p0/datev2/test_agg_keys_schema_change_datev2.groovy
@@ -0,0 +1,264 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+import org.codehaus.groovy.runtime.IOGroovyMethods
+
+suite("test_agg_keys_schema_change_datev2") {
+    def tbName = "test_agg_keys_schema_change_datev2"
+    def getJobState = { tableName ->
+         def jobStateResult = sql """  SHOW ALTER TABLE COLUMN WHERE 
IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """
+         return jobStateResult[0][9]
+    }
+
+    String[][] backends = sql """ show backends; """
+    assertTrue(backends.size() > 0)
+    String backend_id;
+    def backendId_to_backendIP = [:]
+    def backendId_to_backendHttpPort = [:]
+    for (String[] backend in backends) {
+        backendId_to_backendIP.put(backend[0], backend[2])
+        backendId_to_backendHttpPort.put(backend[0], backend[5])
+    }
+
+    backend_id = backendId_to_backendIP.keySet()[0]
+    StringBuilder showConfigCommand = new StringBuilder();
+    showConfigCommand.append("curl -X GET http://";)
+    showConfigCommand.append(backendId_to_backendIP.get(backend_id))
+    showConfigCommand.append(":")
+    showConfigCommand.append(backendId_to_backendHttpPort.get(backend_id))
+    showConfigCommand.append("/api/show_config")
+    logger.info(showConfigCommand.toString())
+    def process = showConfigCommand.toString().execute()
+    int code = process.waitFor()
+    String err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
+    String out = process.getText()
+    logger.info("Show config: code=" + code + ", out=" + out + ", err=" + err)
+    assertEquals(code, 0)
+    def configList = parseJson(out.trim())
+    assert configList instanceof List
+
+    def do_compact = { tableName ->
+        String[][] tablets = sql """ show tablets from ${tableName}; """
+        for (String[] tablet in tablets) {
+            String tablet_id = tablet[0]
+            backend_id = tablet[2]
+            logger.info("run compaction:" + tablet_id)
+            StringBuilder sb = new StringBuilder();
+            sb.append("curl -X POST http://";)
+            sb.append(backendId_to_backendIP.get(backend_id))
+            sb.append(":")
+            sb.append(backendId_to_backendHttpPort.get(backend_id))
+            sb.append("/api/compaction/run?tablet_id=")
+            sb.append(tablet_id)
+            sb.append("&compact_type=cumulative")
+
+            String command = sb.toString()
+            process = command.execute()
+            code = process.waitFor()
+            err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
+            out = process.getText()
+            logger.info("Run compaction: code=" + code + ", out=" + out + ", 
err=" + err)
+        }
+
+        // wait for all compactions done
+        for (String[] tablet in tablets) {
+            boolean running = true
+            do {
+                Thread.sleep(100)
+                String tablet_id = tablet[0]
+                backend_id = tablet[2]
+                StringBuilder sb = new StringBuilder();
+                sb.append("curl -X GET http://";)
+                sb.append(backendId_to_backendIP.get(backend_id))
+                sb.append(":")
+                sb.append(backendId_to_backendHttpPort.get(backend_id))
+                sb.append("/api/compaction/run_status?tablet_id=")
+                sb.append(tablet_id)
+
+                String command = sb.toString()
+                process = command.execute()
+                code = process.waitFor()
+                err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
+                out = process.getText()
+                logger.info("Get compaction status: code=" + code + ", out=" + 
out + ", err=" + err)
+                assertEquals(code, 0)
+                def compactionStatus = parseJson(out.trim())
+                assertEquals("success", compactionStatus.status.toLowerCase())
+                running = compactionStatus.run_status
+            } while (running)
+        }
+    }
+
+    sql """ DROP TABLE IF EXISTS ${tbName} FORCE"""
+    // Create table and disable light weight schema change
+    sql """
+           CREATE TABLE IF NOT EXISTS ${tbName}
+           (
+               `datek1` date DEFAULT '2022-01-01',
+               `datek2` datetime DEFAULT '2022-01-01 11:11:11',
+               `datev1` date MAX DEFAULT '2022-01-01',
+               `datev2` datetime MAX DEFAULT '2022-01-01 11:11:11'
+           )
+           AGGREGATE  KEY(`datek1`,`datek2`)
+           DISTRIBUTED BY HASH(`datek1`) BUCKETS 1
+           PROPERTIES("replication_num" = "1", "light_schema_change" = 
"false");
+        """
+    // datev2
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ alter table ${tbName} add column `datev3` datev2 DEFAULT 
'2022-01-01' """
+    int max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    do_compact(tbName)
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """delete from ${tbName} where `datev3` = '2022-01-01';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ alter table ${tbName} drop column `datev3` """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+
+    // datetimev2(0)
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ alter  table ${tbName} add column `datev3` datetimev2 DEFAULT 
'2022-01-01 11:11:11' """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    do_compact(tbName)
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """delete from ${tbName} where `datev3` = '2022-01-01 11:11:11';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ alter table ${tbName} drop column `datev3` """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+
+    // datetimev2(3)
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ alter  table ${tbName} add column `datev3` datetimev2(3) DEFAULT 
'2022-01-01 11:11:11.111' """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    do_compact(tbName)
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """delete from ${tbName} where `datev3` = '2022-01-01 11:11:11';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02 11:11:11.222', '2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev3`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-02 11:11:11.222', 
'2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev3`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-02 11:11:11.222', 
'2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev3`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-02 11:11:11.222', '2022-01-05', '2022-01-05 
11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev3`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-02 11:11:11.222', '2022-01-06', 
'2022-01-06 11:11:11');"""
+    sql """delete from ${tbName} where `datev3` = '2022-01-01 11:11:11.111';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ alter table ${tbName} drop column `datev3` """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+
+    sql """ DROP TABLE  ${tbName} force"""
+}
diff --git 
a/regression-test/suites/schema_change_p0/datev2/test_dup_keys_schema_change_datev2.groovy
 
b/regression-test/suites/schema_change_p0/datev2/test_dup_keys_schema_change_datev2.groovy
new file mode 100644
index 0000000000..7fd0f30231
--- /dev/null
+++ 
b/regression-test/suites/schema_change_p0/datev2/test_dup_keys_schema_change_datev2.groovy
@@ -0,0 +1,203 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+import org.codehaus.groovy.runtime.IOGroovyMethods
+
+suite("test_dup_keys_schema_change_datev2") {
+    def tbName = "test_dup_keys_schema_change_datev2"
+    def getJobState = { tableName ->
+         def jobStateResult = sql """  SHOW ALTER TABLE COLUMN WHERE 
IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """
+         return jobStateResult[0][9]
+    }
+
+    String[][] backends = sql """ show backends; """
+    assertTrue(backends.size() > 0)
+    String backend_id;
+    def backendId_to_backendIP = [:]
+    def backendId_to_backendHttpPort = [:]
+    for (String[] backend in backends) {
+        backendId_to_backendIP.put(backend[0], backend[2])
+        backendId_to_backendHttpPort.put(backend[0], backend[5])
+    }
+
+    backend_id = backendId_to_backendIP.keySet()[0]
+    StringBuilder showConfigCommand = new StringBuilder();
+    showConfigCommand.append("curl -X GET http://";)
+    showConfigCommand.append(backendId_to_backendIP.get(backend_id))
+    showConfigCommand.append(":")
+    showConfigCommand.append(backendId_to_backendHttpPort.get(backend_id))
+    showConfigCommand.append("/api/show_config")
+    logger.info(showConfigCommand.toString())
+    def process = showConfigCommand.toString().execute()
+    int code = process.waitFor()
+    String err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
+    String out = process.getText()
+    logger.info("Show config: code=" + code + ", out=" + out + ", err=" + err)
+    assertEquals(code, 0)
+    def configList = parseJson(out.trim())
+    assert configList instanceof List
+
+    def do_compact = { tableName ->
+        String[][] tablets = sql """ show tablets from ${tableName}; """
+        for (String[] tablet in tablets) {
+            String tablet_id = tablet[0]
+            backend_id = tablet[2]
+            logger.info("run compaction:" + tablet_id)
+            StringBuilder sb = new StringBuilder();
+            sb.append("curl -X POST http://";)
+            sb.append(backendId_to_backendIP.get(backend_id))
+            sb.append(":")
+            sb.append(backendId_to_backendHttpPort.get(backend_id))
+            sb.append("/api/compaction/run?tablet_id=")
+            sb.append(tablet_id)
+            sb.append("&compact_type=cumulative")
+
+            String command = sb.toString()
+            process = command.execute()
+            code = process.waitFor()
+            err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
+            out = process.getText()
+            logger.info("Run compaction: code=" + code + ", out=" + out + ", 
err=" + err)
+        }
+
+        // wait for all compactions done
+        for (String[] tablet in tablets) {
+            boolean running = true
+            do {
+                Thread.sleep(100)
+                String tablet_id = tablet[0]
+                backend_id = tablet[2]
+                StringBuilder sb = new StringBuilder();
+                sb.append("curl -X GET http://";)
+                sb.append(backendId_to_backendIP.get(backend_id))
+                sb.append(":")
+                sb.append(backendId_to_backendHttpPort.get(backend_id))
+                sb.append("/api/compaction/run_status?tablet_id=")
+                sb.append(tablet_id)
+
+                String command = sb.toString()
+                process = command.execute()
+                code = process.waitFor()
+                err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
+                out = process.getText()
+                logger.info("Get compaction status: code=" + code + ", out=" + 
out + ", err=" + err)
+                assertEquals(code, 0)
+                def compactionStatus = parseJson(out.trim())
+                assertEquals("success", compactionStatus.status.toLowerCase())
+                running = compactionStatus.run_status
+            } while (running)
+        }
+    }
+
+    sql """ DROP TABLE IF EXISTS ${tbName} FORCE"""
+    // Create table and disable light weight schema change
+    sql """
+           CREATE TABLE IF NOT EXISTS ${tbName}
+           (
+               `datek1` date DEFAULT '2022-01-01',
+               `datek2` datetime DEFAULT '2022-01-01 11:11:11',
+               `datev1` date DEFAULT '2022-01-01',
+               `datev2` datetime DEFAULT '2022-01-01 11:11:11'
+           )
+           DUPLICATE KEY(`datek1`,`datek2`)
+           DISTRIBUTED BY HASH(`datek1`) BUCKETS 1
+           PROPERTIES("replication_num" = "1", "light_schema_change" = 
"false");
+        """
+    // datev2
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ alter table ${tbName} modify column `datev1` datev2 DEFAULT 
'2022-01-01' """
+    int max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    do_compact(tbName)
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """delete from ${tbName} where `datev1` <= '2022-01-06';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    // datetimev2(0)
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ alter  table ${tbName} modify column `datev2` datetimev2 DEFAULT 
'2022-01-01 11:11:11' """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    do_compact(tbName)
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """delete from ${tbName} where `datev2` <= '2022-01-06 11:11:11';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    // datetimev2(3)
+    sql """ insert into ${tbName} values('2022-01-02', '2022-01-02 11:11:11', 
'2022-01-02', '2022-01-02 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev1`) 
values('2022-01-03', '2022-01-03 11:11:11', '2022-01-03');"""
+    sql """ insert into ${tbName} (`datek1`, `datek2`, `datev2`) 
values('2022-01-04', '2022-01-04 11:11:11', '2022-01-04 11:11:11');"""
+    sql """ insert into ${tbName} (`datek1`, `datev1`, `datev2`) 
values('2022-01-05', '2022-01-05', '2022-01-05 11:11:11');"""
+    sql """ insert into ${tbName} (`datek2`, `datev1`, `datev2`) 
values('2022-01-06 11:11:11', '2022-01-06', '2022-01-06 11:11:11');"""
+
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """ alter  table ${tbName} modify column `datev2` datetimev2(3) 
DEFAULT '2022-01-01 11:11:11' """
+    max_try_time = 1000
+    while(max_try_time--){
+        String result = getJobState(tbName)
+        if (result == "FINISHED") {
+            break
+        } else {
+            sleep(100)
+            if (max_try_time < 1){
+                assertEquals(1,2)
+            }
+        }
+    }
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    do_compact(tbName)
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+    sql """delete from ${tbName} where `datev2` < '2022-01-06 11:11:11.111';"""
+    qt_sql """select /*+ SET_VAR(enable_vectorized_engine=true) */ * from 
${tbName} ORDER BY `datek1`;"""
+
+    sql """ DROP TABLE  ${tbName} force"""
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to