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

morningman 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 572f491756 [fix](ctas) text column type len = 1 when create table as 
select (#13906)
572f491756 is described below

commit 572f49175666fb71dbe040c5cff60252398775be
Author: xueweizhang <zxw520bl...@163.com>
AuthorDate: Wed Nov 9 09:09:34 2022 +0800

    [fix](ctas) text column type len = 1 when create table as select (#13906)
    
    Signed-off-by: nextdreamblue <zxw520bl...@163.com>
---
 .../java/org/apache/doris/analysis/ColumnDef.java     |  7 ++++++-
 .../org/apache/doris/datasource/InternalCatalog.java  |  3 ++-
 regression-test/data/ddl_p0/test_ctas.out             |  8 +++++++-
 regression-test/suites/ddl_p0/test_ctas.groovy        | 19 ++++++++++++++++++-
 4 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
index d6b7981993..170ceaea4c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
@@ -206,7 +206,12 @@ public class ColumnDef {
         if (typeDef.getType().isScalarType()) {
             final ScalarType targetType = (ScalarType) typeDef.getType();
             if (targetType.getPrimitiveType().isStringType() && 
!targetType.isLengthSet()) {
-                targetType.setLength(1);
+                if (targetType.getPrimitiveType() != PrimitiveType.STRING) {
+                    targetType.setLength(1);
+                } else {
+                    // alway set text length MAX_STRING_LENGTH
+                    targetType.setLength(ScalarType.MAX_STRING_LENGTH);
+                }
             }
         }
 
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 c66ee75e46..6bfec923e2 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
@@ -1206,7 +1206,8 @@ public class InternalCatalog implements 
CatalogIf<Database> {
                 Expr resultExpr = resultExprs.get(i);
                 Type resultType = resultExpr.getType();
                 if (resultType.isStringType() && resultType.getLength() < 0) {
-                    typeDef = new TypeDef(Type.STRING);
+                    // alway set text length MAX_STRING_LENGTH
+                    typeDef = new TypeDef(ScalarType.createStringType());
                 } else if (resultType.isDecimalV2() && 
resultType.equals(ScalarType.DECIMALV2)) {
                     typeDef = new TypeDef(ScalarType.createDecimalType(27, 9));
                 } else if (resultType.isDecimalV3()) {
diff --git a/regression-test/data/ddl_p0/test_ctas.out 
b/regression-test/data/ddl_p0/test_ctas.out
index aa41c6a791..2a8f9f7979 100644
--- a/regression-test/data/ddl_p0/test_ctas.out
+++ b/regression-test/data/ddl_p0/test_ctas.out
@@ -1,6 +1,12 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
 -- !select --
-test_ctas1     CREATE TABLE `test_ctas1` (\n  `test_varchar` varchar(150) 
NULL,\n  `test_datetime` datetime NULL,\n  `test_default_timestamp` datetime 
NULL DEFAULT CURRENT_TIMESTAMP\n) ENGINE=OLAP\nDUPLICATE 
KEY(`test_varchar`)\nCOMMENT 'OLAP'\nDISTRIBUTED BY HASH(`test_varchar`) 
BUCKETS 10\nPROPERTIES (\n"replication_allocation" = "tag.location.default: 
1",\n"in_memory" = "false",\n"storage_format" = 
"V2",\n"disable_auto_compaction" = "false"\n);
+test_ctas1     CREATE TABLE `test_ctas1` (\n  `test_varchar` varchar(150) 
NULL,\n  `test_text` text NULL,\n  `test_datetime` datetime NULL,\n  
`test_default_timestamp` datetime NULL DEFAULT CURRENT_TIMESTAMP\n) 
ENGINE=OLAP\nDUPLICATE KEY(`test_varchar`)\nCOMMENT 'OLAP'\nDISTRIBUTED BY 
HASH(`test_varchar`) BUCKETS 10\nPROPERTIES (\n"replication_allocation" = 
"tag.location.default: 1",\n"in_memory" = "false",\n"storage_format" = 
"V2",\n"disable_auto_compaction" = "false"\n);
+
+-- !select --
+2
+
+-- !select --
+test_ctas2     CREATE TABLE `test_ctas2` (\n  `test_varchar` varchar(150) 
NULL,\n  `test_text` text NULL,\n  `test_datetime` datetime NULL,\n  
`test_default_timestamp` datetime NULL DEFAULT CURRENT_TIMESTAMP\n) 
ENGINE=OLAP\nDUPLICATE KEY(`test_varchar`)\nCOMMENT 'OLAP'\nDISTRIBUTED BY 
HASH(`test_varchar`) BUCKETS 10\nPROPERTIES (\n"replication_allocation" = 
"tag.location.default: 1",\n"in_memory" = "false",\n"storage_format" = 
"V2",\n"disable_auto_compaction" = "false"\n);
 
 -- !select --
 2
diff --git a/regression-test/suites/ddl_p0/test_ctas.groovy 
b/regression-test/suites/ddl_p0/test_ctas.groovy
index 74403f7602..2a94e82b0e 100644
--- a/regression-test/suites/ddl_p0/test_ctas.groovy
+++ b/regression-test/suites/ddl_p0/test_ctas.groovy
@@ -20,6 +20,7 @@ suite("test_ctas") {
         sql """
     CREATE TABLE IF NOT EXISTS `test_ctas` (
       `test_varchar` varchar(150) NULL,
+      `test_text` text NULL,
       `test_datetime` datetime NULL,
       `test_default_timestamp` datetime DEFAULT CURRENT_TIMESTAMP
     ) ENGINE=OLAP
@@ -32,7 +33,7 @@ suite("test_ctas") {
     )
     """
 
-        sql """ INSERT INTO test_ctas(test_varchar, test_datetime) VALUES 
('test1','2022-04-27 16:00:33'),('test2','2022-04-27 16:00:54') """
+        sql """ INSERT INTO test_ctas(test_varchar, test_text, test_datetime) 
VALUES ('test1','test11','2022-04-27 16:00:33'),('test2','test22','2022-04-27 
16:00:54') """
 
         sql """
     CREATE TABLE IF NOT EXISTS `test_ctas1`
@@ -46,10 +47,26 @@ suite("test_ctas") {
         qt_select """SHOW CREATE TABLE `test_ctas1`"""
 
         qt_select """select count(*) from test_ctas1"""
+
+        sql """
+    CREATE TABLE IF NOT EXISTS `test_ctas2`
+    PROPERTIES (
+      "replication_allocation" = "tag.location.default: 1",
+      "in_memory" = "false",
+      "storage_format" = "V2"
+    ) as select test_varchar, lpad(test_text,10,'0') as test_text, 
test_datetime, test_default_timestamp from test_ctas;
+    """
+
+        qt_select """SHOW CREATE TABLE `test_ctas2`"""
+
+        qt_select """select count(*) from test_ctas2"""
     } finally {
         sql """ DROP TABLE IF EXISTS test_ctas """
 
         sql """ DROP TABLE IF EXISTS test_ctas1 """
+
+        sql """ DROP TABLE IF EXISTS test_ctas2 """
     }
 
 }
+


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

Reply via email to