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 5c3367b67d [Bug](ctas/ctl): Ctas and ctl default value error (#12015)
5c3367b67d is described below

commit 5c3367b67daec00ce933aa5289ef3c954535f653
Author: Stalary <[email protected]>
AuthorDate: Wed Aug 24 08:46:43 2022 +0800

    [Bug](ctas/ctl): Ctas and ctl default value error (#12015)
---
 .../main/java/org/apache/doris/catalog/Column.java |   6 +-
 .../apache/doris/datasource/InternalCatalog.java   |  10 +-
 .../analysis/CreateTableAsSelectStmtTest.java      | 126 ++++++++++++---------
 3 files changed, 87 insertions(+), 55 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
index a7ca238e60..f5a420a51c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
@@ -550,7 +550,11 @@ public class Column implements Writable {
             sb.append(" NOT NULL");
         }
         if (defaultValue != null && getDataType() != PrimitiveType.HLL && 
getDataType() != PrimitiveType.BITMAP) {
-            sb.append(" DEFAULT \"").append(defaultValue).append("\"");
+            if (defaultValueExprDef != null) {
+                sb.append(" DEFAULT ").append(defaultValue).append("");
+            } else {
+                sb.append(" DEFAULT \"").append(defaultValue).append("\"");
+            }
         }
         if (StringUtils.isNotBlank(comment)) {
             sb.append(" COMMENT '").append(getComment(true)).append("'");
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
index 7a4c75faab..175160be9d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
@@ -1146,9 +1146,15 @@ public class InternalCatalog implements 
CatalogIf<Database> {
                 } else {
                     Column column = 
resultExpr.getSrcSlotRef().getDesc().getColumn();
                     boolean setDefault = 
StringUtils.isNotBlank(column.getDefaultValue());
+                    DefaultValue defaultValue;
+                    if (column.getDefaultValueExprDef() != null) {
+                        defaultValue = new DefaultValue(setDefault, 
column.getDefaultValue(),
+                                column.getDefaultValueExprDef().getExprName());
+                    } else {
+                        defaultValue = new DefaultValue(setDefault, 
column.getDefaultValue());
+                    }
                     columnDef = new ColumnDef(name, typeDef, column.isKey(), 
column.getAggregationType(),
-                            column.isAllowNull(), new DefaultValue(setDefault, 
column.getDefaultValue()),
-                            column.getComment());
+                            column.isAllowNull(), defaultValue, 
column.getComment());
                 }
                 createTableStmt.addColumnDef(columnDef);
                 // set first column as default distribution
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableAsSelectStmtTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableAsSelectStmtTest.java
index 75355d6c69..28c09dc57b 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableAsSelectStmtTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableAsSelectStmtTest.java
@@ -55,6 +55,13 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
                 + "\"replication_allocation\" = \"tag.location.default: 
1\",\n" + "\"in_memory\" = \"false\",\n"
                 + "\"storage_format\" = \"V2\"\n)";
         createTable(joinTable);
+        String defaultTimestampTable =
+                "CREATE TABLE `test`.`default_timestamp_table` (`userId`   
varchar(255) NOT NULL,"
+                        + " `date`  datetime NULL DEFAULT CURRENT_TIMESTAMP)" 
+ " ENGINE = OLAP unique KEY(`userId`)\n"
+                        + "COMMENT 'default_timestamp_table'\n" + "DISTRIBUTED 
BY HASH(`userId`) BUCKETS 10\n"
+                        + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
+                        + "\"in_memory\" = \"false\",\n" + "\"storage_format\" 
= \"V2\"\n)";
+        createTable(defaultTimestampTable);
     }
 
     @Test
@@ -77,16 +84,18 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         if (Config.enable_decimal_conversion && Config.enable_decimalv3) {
             Assertions.assertEquals(
                     "CREATE TABLE `select_decimal_table_1` (\n" + "  `_col0` 
decimal(38, 2) NULL\n" + ") ENGINE=OLAP\n"
-                            + "DUPLICATE KEY(`_col0`)\n" + "COMMENT 'OLAP'\n" 
+ "DISTRIBUTED BY HASH(`_col0`) BUCKETS 10\n"
-                            + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
+                            + "DUPLICATE KEY(`_col0`)\n" + "COMMENT 'OLAP'\n"
+                            + "DISTRIBUTED BY HASH(`_col0`) BUCKETS 10\n" + 
"PROPERTIES (\n"
+                            + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
                             + "\"in_memory\" = \"false\",\n" + 
"\"storage_format\" = \"V2\","
                             + "\n\"disable_auto_compaction\" = \"false\"\n" + 
")",
                     
showCreateTableByName("select_decimal_table_1").getResultRows().get(0).get(1));
         } else {
             Assertions.assertEquals(
                     "CREATE TABLE `select_decimal_table_1` (\n" + "  `_col0` 
decimal(27, 9) NULL\n" + ") ENGINE=OLAP\n"
-                            + "DUPLICATE KEY(`_col0`)\n" + "COMMENT 'OLAP'\n" 
+ "DISTRIBUTED BY HASH(`_col0`) BUCKETS 10\n"
-                            + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
+                            + "DUPLICATE KEY(`_col0`)\n" + "COMMENT 'OLAP'\n"
+                            + "DISTRIBUTED BY HASH(`_col0`) BUCKETS 10\n" + 
"PROPERTIES (\n"
+                            + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
                             + "\"in_memory\" = \"false\",\n" + 
"\"storage_format\" = \"V2\","
                             + "\n\"disable_auto_compaction\" = \"false\"\n" + 
")",
                     
showCreateTableByName("select_decimal_table_1").getResultRows().get(0).get(1));
@@ -110,10 +119,11 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         createTableAsSelect(selectFromVarchar);
         ShowResultSet showResultSet = showCreateTableByName("select_varchar");
         Assertions.assertEquals("CREATE TABLE `select_varchar` (\n" + "  
`userId` varchar(255) NOT NULL,\n"
-                + "  `username` varchar(255) REPLACE NOT NULL\n" + ") 
ENGINE=OLAP\n" + "AGGREGATE KEY(`userId`)\n"
-                + "COMMENT 'OLAP'\n" + "DISTRIBUTED BY HASH(`userId`) BUCKETS 
10\n" + "PROPERTIES (\n"
-                + "\"replication_allocation\" = \"tag.location.default: 
1\",\n" + "\"in_memory\" = \"false\",\n"
-                + "\"storage_format\" = \"V2\",\n\"disable_auto_compaction\" = 
\"false\"\n" + ")",
+                        + "  `username` varchar(255) REPLACE NOT NULL\n"
+                        + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`userId`)\n"
+                        + "COMMENT 'OLAP'\n" + "DISTRIBUTED BY HASH(`userId`) 
BUCKETS 10\n" + "PROPERTIES (\n"
+                        + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n" + "\"in_memory\" = \"false\",\n"
+                        + "\"storage_format\" = 
\"V2\",\n\"disable_auto_compaction\" = \"false\"\n" + ")",
                 showResultSet.getResultRows().get(0).get(1));
     }
 
@@ -154,21 +164,20 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         createTableAsSelect(selectAlias1);
         ShowResultSet showResultSet1 = showCreateTableByName("select_alias_1");
         Assertions.assertEquals("CREATE TABLE `select_alias_1` (\n" + "  
`amount` bigint(20) NULL\n" + ") ENGINE=OLAP\n"
-                        + "DUPLICATE KEY(`amount`)\n" + "COMMENT 'OLAP'\n"
-                        + "DISTRIBUTED BY HASH(`amount`) BUCKETS 10\n"
-                        + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
-                        + "\"in_memory\" = \"false\",\n" + "\"storage_format\" 
= \"V2\","
-                        + "\n\"disable_auto_compaction\" = \"false\"\n" + ")",
-                showResultSet1.getResultRows().get(0).get(1));
+                + "DUPLICATE KEY(`amount`)\n" + "COMMENT 'OLAP'\n" + 
"DISTRIBUTED BY HASH(`amount`) BUCKETS 10\n"
+                + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
+                + "\"in_memory\" = \"false\",\n" + "\"storage_format\" = 
\"V2\","
+                + "\n\"disable_auto_compaction\" = \"false\"\n" + ")", 
showResultSet1.getResultRows().get(0).get(1));
         String selectAlias2 = "create table `test`.`select_alias_2` 
PROPERTIES(\"replication_num\" = \"1\") "
                 + "as select userId as alias_name, username from 
`test`.`varchar_table`";
         createTableAsSelect(selectAlias2);
         ShowResultSet showResultSet2 = showCreateTableByName("select_alias_2");
         Assertions.assertEquals("CREATE TABLE `select_alias_2` (\n" + "  
`alias_name` varchar(255) NOT NULL,\n"
-                + "  `username` varchar(255) REPLACE NOT NULL\n" + ") 
ENGINE=OLAP\n" + "AGGREGATE KEY(`alias_name`)\n"
-                + "COMMENT 'OLAP'\n" + "DISTRIBUTED BY HASH(`alias_name`) 
BUCKETS 10\n" + "PROPERTIES (\n"
-                + "\"replication_allocation\" = \"tag.location.default: 
1\",\n" + "\"in_memory\" = \"false\",\n"
-                + "\"storage_format\" = \"V2\",\n\"disable_auto_compaction\" = 
\"false\"\n" + ")",
+                        + "  `username` varchar(255) REPLACE NOT NULL\n"
+                        + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`alias_name`)\n"
+                        + "COMMENT 'OLAP'\n" + "DISTRIBUTED BY 
HASH(`alias_name`) BUCKETS 10\n" + "PROPERTIES (\n"
+                        + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n" + "\"in_memory\" = \"false\",\n"
+                        + "\"storage_format\" = 
\"V2\",\n\"disable_auto_compaction\" = \"false\"\n" + ")",
                 showResultSet2.getResultRows().get(0).get(1));
     }
 
@@ -180,11 +189,11 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         createTableAsSelect(selectFromJoin);
         ShowResultSet showResultSet = showCreateTableByName("select_join");
         Assertions.assertEquals("CREATE TABLE `select_join` (\n" + "  `userId` 
varchar(255) NOT NULL,\n"
-                + "  `username` varchar(255) REPLACE NOT NULL,\n" + "  
`status` int(11) REPLACE NOT NULL\n"
-                + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`userId`)\n" + "COMMENT 
'OLAP'\n"
-                + "DISTRIBUTED BY HASH(`userId`) BUCKETS 10\n" + "PROPERTIES 
(\n"
-                + "\"replication_allocation\" = \"tag.location.default: 
1\",\n" + "\"in_memory\" = \"false\",\n"
-                + "\"storage_format\" = \"V2\",\n\"disable_auto_compaction\" = 
\"false\"\n" + ")",
+                        + "  `username` varchar(255) REPLACE NOT NULL,\n" + "  
`status` int(11) REPLACE NOT NULL\n"
+                        + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`userId`)\n" + 
"COMMENT 'OLAP'\n"
+                        + "DISTRIBUTED BY HASH(`userId`) BUCKETS 10\n" + 
"PROPERTIES (\n"
+                        + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n" + "\"in_memory\" = \"false\",\n"
+                        + "\"storage_format\" = 
\"V2\",\n\"disable_auto_compaction\" = \"false\"\n" + ")",
                 showResultSet.getResultRows().get(0).get(1));
         String selectFromJoin1 = "create table `test`.`select_join1` 
PROPERTIES(\"replication_num\" = \"1\") "
                 + "as select vt.userId as userId1, jt.userId as userId2, 
vt.username, jt.status "
@@ -192,11 +201,12 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         createTableAsSelect(selectFromJoin1);
         ShowResultSet showResultSet1 = showCreateTableByName("select_join1");
         Assertions.assertEquals("CREATE TABLE `select_join1` (\n" + "  
`userId1` varchar(255) NOT NULL,\n"
-                + "  `userId2` varchar(255) NOT NULL,\n" + "  `username` 
varchar(255) REPLACE NOT NULL,\n"
-                + "  `status` int(11) REPLACE NOT NULL\n" + ") ENGINE=OLAP\n" 
+ "AGGREGATE KEY(`userId1`, `userId2`)\n"
-                + "COMMENT 'OLAP'\n" + "DISTRIBUTED BY HASH(`userId1`) BUCKETS 
10\n" + "PROPERTIES (\n"
-                + "\"replication_allocation\" = \"tag.location.default: 
1\",\n" + "\"in_memory\" = \"false\",\n"
-                + "\"storage_format\" = \"V2\",\n\"disable_auto_compaction\" = 
\"false\"\n" + ")",
+                        + "  `userId2` varchar(255) NOT NULL,\n" + "  
`username` varchar(255) REPLACE NOT NULL,\n"
+                        + "  `status` int(11) REPLACE NOT NULL\n"
+                        + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`userId1`, 
`userId2`)\n"
+                        + "COMMENT 'OLAP'\n" + "DISTRIBUTED BY HASH(`userId1`) 
BUCKETS 10\n" + "PROPERTIES (\n"
+                        + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n" + "\"in_memory\" = \"false\",\n"
+                        + "\"storage_format\" = 
\"V2\",\n\"disable_auto_compaction\" = \"false\"\n" + ")",
                 showResultSet1.getResultRows().get(0).get(1));
     }
 
@@ -209,11 +219,11 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         createTableAsSelect(selectFromName);
         ShowResultSet showResultSet = showCreateTableByName("select_name");
         Assertions.assertEquals("CREATE TABLE `select_name` (\n" + "  `user` 
varchar(255) NOT NULL,\n"
-                + "  `testname` varchar(255) REPLACE NOT NULL,\n" + "  
`userstatus` int(11) REPLACE NOT NULL\n"
-                + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`user`)\n" + "COMMENT 
'OLAP'\n"
-                + "DISTRIBUTED BY HASH(`user`) BUCKETS 10\n" + "PROPERTIES (\n"
-                + "\"replication_allocation\" = \"tag.location.default: 
1\",\n" + "\"in_memory\" = \"false\",\n"
-                + "\"storage_format\" = \"V2\",\n\"disable_auto_compaction\" = 
\"false\"\n" + ")",
+                        + "  `testname` varchar(255) REPLACE NOT NULL,\n" + "  
`userstatus` int(11) REPLACE NOT NULL\n"
+                        + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`user`)\n" + 
"COMMENT 'OLAP'\n"
+                        + "DISTRIBUTED BY HASH(`user`) BUCKETS 10\n" + 
"PROPERTIES (\n"
+                        + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n" + "\"in_memory\" = \"false\",\n"
+                        + "\"storage_format\" = 
\"V2\",\n\"disable_auto_compaction\" = \"false\"\n" + ")",
                 showResultSet.getResultRows().get(0).get(1));
     }
 
@@ -224,12 +234,10 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         createTableAsSelect(selectFromName);
         ShowResultSet showResultSet = showCreateTableByName("select_union");
         Assertions.assertEquals("CREATE TABLE `select_union` (\n" + "  
`userId` varchar(255) NULL\n" + ") ENGINE=OLAP\n"
-                        + "DUPLICATE KEY(`userId`)\n" + "COMMENT 'OLAP'\n"
-                        + "DISTRIBUTED BY HASH(`userId`) BUCKETS 10\n"
-                        + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
-                        + "\"in_memory\" = \"false\",\n" + "\"storage_format\" 
= \"V2\",\n\"disable_auto_compaction\""
-                        + " = \"false\"\n" + ")",
-                showResultSet.getResultRows().get(0).get(1));
+                + "DUPLICATE KEY(`userId`)\n" + "COMMENT 'OLAP'\n" + 
"DISTRIBUTED BY HASH(`userId`) BUCKETS 10\n"
+                + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
+                + "\"in_memory\" = \"false\",\n" + "\"storage_format\" = 
\"V2\",\n\"disable_auto_compaction\""
+                + " = \"false\"\n" + ")", 
showResultSet.getResultRows().get(0).get(1));
     }
 
     @Test
@@ -249,13 +257,11 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
                 + "as with source_data as (select 1 as id union all select 2 
as id) select * from source_data;";
         createTableAsSelect(selectFromCteAndUnion);
         ShowResultSet showResultSet1 = 
showCreateTableByName("select_cte_union");
-        Assertions.assertEquals(
-                "CREATE TABLE `select_cte_union` (\n" + "  `id` tinyint(4) 
NULL\n" + ") ENGINE=OLAP\n"
-                        + "DUPLICATE KEY(`id`)\n" + "COMMENT 'OLAP'\n" + 
"DISTRIBUTED BY HASH(`id`) BUCKETS 10\n"
-                        + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
-                        + "\"in_memory\" = \"false\",\n" + "\"storage_format\" 
= \"V2\","
-                        + "\n\"disable_auto_compaction\" = \"false\"\n" + ")",
-                showResultSet1.getResultRows().get(0).get(1));
+        Assertions.assertEquals("CREATE TABLE `select_cte_union` (\n" + "  
`id` tinyint(4) NULL\n" + ") ENGINE=OLAP\n"
+                + "DUPLICATE KEY(`id`)\n" + "COMMENT 'OLAP'\n" + "DISTRIBUTED 
BY HASH(`id`) BUCKETS 10\n"
+                + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
+                + "\"in_memory\" = \"false\",\n" + "\"storage_format\" = 
\"V2\","
+                + "\n\"disable_auto_compaction\" = \"false\"\n" + ")", 
showResultSet1.getResultRows().get(0).get(1));
     }
 
     @Test
@@ -266,12 +272,28 @@ public class CreateTableAsSelectStmtTest extends 
TestWithFeService {
         createTableAsSelect(selectFromPartition);
         ShowResultSet showResultSet = showCreateTableByName("selectPartition");
         Assertions.assertEquals("CREATE TABLE `selectPartition` (\n" + "  
`userId` varchar(255) NOT NULL,\n"
-                + "  `username` varchar(255) REPLACE NOT NULL\n" + ") 
ENGINE=OLAP\n" + "AGGREGATE KEY(`userId`)\n"
-                + "COMMENT 'OLAP'\n" + "PARTITION BY LIST(`userId`)\n"
-                + "(PARTITION p1 VALUES IN (\"CA\",\"GB\",\"US\",\"ZH\"))\n"
-                + "DISTRIBUTED BY HASH(`userId`) BUCKETS 10\n" + "PROPERTIES 
(\n"
-                + "\"replication_allocation\" = \"tag.location.default: 
1\",\n" + "\"in_memory\" = \"false\",\n"
-                + "\"storage_format\" = \"V2\",\n\"disable_auto_compaction\" = 
\"false\"\n" + ")",
+                        + "  `username` varchar(255) REPLACE NOT NULL\n"
+                        + ") ENGINE=OLAP\n" + "AGGREGATE KEY(`userId`)\n"
+                        + "COMMENT 'OLAP'\n" + "PARTITION BY LIST(`userId`)\n"
+                        + "(PARTITION p1 VALUES IN 
(\"CA\",\"GB\",\"US\",\"ZH\"))\n"
+                        + "DISTRIBUTED BY HASH(`userId`) BUCKETS 10\n" + 
"PROPERTIES (\n"
+                        + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n" + "\"in_memory\" = \"false\",\n"
+                        + "\"storage_format\" = 
\"V2\",\n\"disable_auto_compaction\" = \"false\"\n" + ")",
                 showResultSet.getResultRows().get(0).get(1));
     }
+
+    @Test
+    public void testDefaultTimestamp() throws Exception {
+        String createSql
+                = "create table `test`.`test_default_timestamp` PROPERTIES 
(\"replication_num\" = \"1\")"
+                + " as select * from `test`.`default_timestamp_table`";
+        createTableAsSelect(createSql);
+        ShowResultSet showResultSet = 
showCreateTableByName("test_default_timestamp");
+        Assertions.assertEquals("CREATE TABLE `test_default_timestamp` (\n" + 
"  `userId` varchar(255) NOT NULL,\n"
+                + "  `date` datetime REPLACE NULL DEFAULT CURRENT_TIMESTAMP\n" 
+ ") ENGINE=OLAP\n"
+                + "AGGREGATE KEY(`userId`)\n" + "COMMENT 'OLAP'\n" + 
"DISTRIBUTED BY HASH(`userId`) BUCKETS 10\n"
+                + "PROPERTIES (\n" + "\"replication_allocation\" = 
\"tag.location.default: 1\",\n"
+                + "\"in_memory\" = \"false\",\n" + "\"storage_format\" = 
\"V2\",\n"
+                + "\"disable_auto_compaction\" = \"false\"\n" + ")", 
showResultSet.getResultRows().get(0).get(1));
+    }
 }


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

Reply via email to