You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/04/08 02:31:19 UTC

[incubator-doris] 05/14: [fix](ut) fix fe run CreateTableAsSelectStmtTest ,UserPropertyTest, ProjectPlannerFunctionTest and AggregateTest failed (#8838)

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

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

commit 1eebb658e18ea3707bf7ba09f0e668166cad2cea
Author: caiconghui <55...@users.noreply.github.com>
AuthorDate: Wed Apr 6 15:23:49 2022 +0800

    [fix](ut) fix fe run CreateTableAsSelectStmtTest ,UserPropertyTest,  ProjectPlannerFunctionTest and AggregateTest failed (#8838)
---
 .../apache/doris/analysis/FunctionCallExpr.java    | 12 +++----
 .../java/org/apache/doris/catalog/Catalog.java     |  3 +-
 .../main/java/org/apache/doris/catalog/Column.java |  5 +--
 .../org/apache/doris/analysis/AggregateTest.java   |  4 +--
 .../analysis/CreateTableAsSelectStmtTest.java      | 25 +++++++------
 .../org/apache/doris/catalog/UserPropertyTest.java | 41 ++++++++++++++++++++++
 .../doris/planner/ProjectPlannerFunctionTest.java  |  2 +-
 .../doris/planner/TableFunctionPlanTest.java       |  8 ++---
 8 files changed, 68 insertions(+), 32 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
index e64a2d121c..a023da2e6c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
@@ -236,17 +236,17 @@ public class FunctionCallExpr extends Expr {
                 && fnParams.isStar() == o.fnParams.isStar();
     }
 
-    private String paramsToSql(FunctionParams params) {
+    private String paramsToSql() {
         StringBuilder sb = new StringBuilder();
         sb.append("(");
 
-        if (params.isStar()) {
+        if (fnParams.isStar()) {
             sb.append("*");
         }
-        if (params.isDistinct()) {
+        if (fnParams.isDistinct()) {
             sb.append("DISTINCT ");
         }
-        int len = params.exprs().size();
+        int len = children.size();
         List<String> result = Lists.newArrayList();
         if (fnName.getFunction().equalsIgnoreCase("json_array") ||
                 fnName.getFunction().equalsIgnoreCase("json_object")) {
@@ -265,7 +265,7 @@ public class FunctionCallExpr extends Expr {
                     fnName.getFunction().equalsIgnoreCase("sm4_encrypt"))) {
                 result.add("\'***\'");
             } else {
-                result.add(params.exprs().get(i).toSql());
+                result.add(children.get(i).toSql());
             }
         }
         sb.append(Joiner.on(", ").join(result)).append(")");
@@ -282,7 +282,7 @@ public class FunctionCallExpr extends Expr {
         }
         StringBuilder sb = new StringBuilder();
         sb.append(((FunctionCallExpr) expr).fnName);
-        sb.append(paramsToSql(fnParams));
+        sb.append(paramsToSql());
         if (fnName.getFunction().equalsIgnoreCase("json_quote") ||
             fnName.getFunction().equalsIgnoreCase("json_array") ||
             fnName.getFunction().equalsIgnoreCase("json_object")) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
index 57a066680f..beaa10d415 100755
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Catalog.java
@@ -3116,8 +3116,7 @@ public class Catalog {
                 }
                 TypeDef typeDef;
                 Expr resultExpr = resultExprs.get(i);
-                // varchar/char transfer to string
-                if (resultExpr.getType().isStringType()) {
+                if (resultExpr.getType().isStringType() && resultExpr.getType().getLength() < 0) {
                     typeDef = new TypeDef(Type.STRING);
                 } else {
                     typeDef = new TypeDef(resultExpr.getType());
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 522d6c0bdc..d5b45a83e8 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
@@ -230,10 +230,7 @@ public class Column implements Writable {
     public PrimitiveType getDataType() { return type.getPrimitiveType(); }
 
     public Type getType() {
-        if (type.isArrayType() || type.isMapType() || type.isStructType()) {
-            return type;
-        }
-	    return ScalarType.createType(type.getPrimitiveType());
+        return type;
     }
 
     public void setType(Type type) {
diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/AggregateTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/AggregateTest.java
index 35225dca12..f239a303a8 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/AggregateTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/AggregateTest.java
@@ -130,7 +130,7 @@ public class AggregateTest {
             try {
                 UtFrameUtils.parseAndAnalyzeStmt(query, ctx);
             } catch (AnalysisException e) {
-                Assert.assertTrue(e.getMessage().contains("The window param of window_funnel function must be integer"));
+                Assert.assertTrue(e.getMessage().contains("The window params of window_funnel function must be integer"));
                 break;
             } catch (Exception e) {
                 Assert.fail("must be AnalysisException.");
@@ -144,7 +144,7 @@ public class AggregateTest {
             try {
                 UtFrameUtils.parseAndAnalyzeStmt(query, ctx);
             } catch (AnalysisException e) {
-                Assert.assertTrue(e.getMessage().contains("The mode param of window_funnel function must be string"));
+                Assert.assertTrue(e.getMessage().contains("The mode params of window_funnel function must be integer"));
                 break;
             } catch (Exception e) {
                 Assert.fail("must be AnalysisException.");
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 7804f6c94a..bf2154c5bd 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
@@ -113,14 +113,14 @@ public class CreateTableAsSelectStmtTest {
     }
     
     @Test
-    public void testErrorType() throws Exception {
+    public void testErrorType() {
         String selectFromDecimal = "create table `test`.`select_decimal_table` PROPERTIES(\"replication_num\" = \"1\") as select * from `test`.`decimal_table`";
         ExceptionChecker.expectThrowsWithMsg(AnalysisException.class, "Unsupported type",
                 () -> UtFrameUtils.parseAndAnalyzeStmt(selectFromDecimal, connectContext));
     }
     
     @Test
-    public void testErrorColumn() throws Exception {
+    public void testErrorColumn() {
         String selectFromColumn = "create table `test`.`select_column_table`(test_error) PROPERTIES(\"replication_num\" = \"1\") as select * from `test`.`varchar_table`";
         ExceptionChecker.expectThrowsWithMsg(AnalysisException.class, "Number of columns don't equal number of SELECT statement's select list",
                 () -> UtFrameUtils.parseAndAnalyzeStmt(selectFromColumn, connectContext));
@@ -132,8 +132,8 @@ public class CreateTableAsSelectStmtTest {
         createTableAsSelect(selectFromDecimal);
         ShowResultSet showResultSet = showCreateTable("select_varchar");
         Assert.assertEquals("CREATE TABLE `select_varchar` (\n" +
-                "  `userId` text NULL COMMENT \"\",\n" +
-                "  `username` text NULL COMMENT \"\"\n" +
+                "  `userId` varchar(255) NULL COMMENT \"\",\n" +
+                "  `username` varchar(255) NULL COMMENT \"\"\n" +
                 ") ENGINE=OLAP\n" +
                 "DUPLICATE KEY(`userId`)\n" +
                 "COMMENT \"OLAP\"\n" +
@@ -150,7 +150,6 @@ public class CreateTableAsSelectStmtTest {
         String selectFromFunction1 = "create table `test`.`select_function_1` PROPERTIES(\"replication_num\" = \"1\") as select count(*) from `test`.`varchar_table`";
         createTableAsSelect(selectFromFunction1);
         ShowResultSet showResultSet1 = showCreateTable("select_function_1");
-        System.out.println(showResultSet1.getResultRows().get(0).get(1));
         Assert.assertEquals("CREATE TABLE `select_function_1` (\n" +
                 "  `_col0` bigint(20) NULL COMMENT \"\"\n" +
                 ") ENGINE=OLAP\n" +
@@ -203,8 +202,8 @@ public class CreateTableAsSelectStmtTest {
         createTableAsSelect(selectAlias2);
         ShowResultSet showResultSet2 = showCreateTable("select_alias_2");
         Assert.assertEquals("CREATE TABLE `select_alias_2` (\n" +
-                "  `alias_name` text NULL COMMENT \"\",\n" +
-                "  `username` text NULL COMMENT \"\"\n" +
+                "  `alias_name` varchar(255) NULL COMMENT \"\",\n" +
+                "  `username` varchar(255) NULL COMMENT \"\"\n" +
                 ") ENGINE=OLAP\n" +
                 "DUPLICATE KEY(`alias_name`)\n" +
                 "COMMENT \"OLAP\"\n" +
@@ -223,8 +222,8 @@ public class CreateTableAsSelectStmtTest {
         createTableAsSelect(selectFromJoin);
         ShowResultSet showResultSet = showCreateTable("select_join");
         Assert.assertEquals("CREATE TABLE `select_join` (\n" +
-                "  `userId` text NULL COMMENT \"\",\n" +
-                "  `username` text NULL COMMENT \"\",\n" +
+                "  `userId` varchar(255) NULL COMMENT \"\",\n" +
+                "  `username` varchar(255) NULL COMMENT \"\",\n" +
                 "  `status` int(11) NULL COMMENT \"\"\n" +
                 ") ENGINE=OLAP\n" +
                 "DUPLICATE KEY(`userId`)\n" +
@@ -244,8 +243,8 @@ public class CreateTableAsSelectStmtTest {
         createTableAsSelect(selectFromName);
         ShowResultSet showResultSet = showCreateTable("select_name");
         Assert.assertEquals("CREATE TABLE `select_name` (\n" +
-                "  `user` text NULL COMMENT \"\",\n" +
-                "  `testname` text NULL COMMENT \"\",\n" +
+                "  `user` varchar(255) NULL COMMENT \"\",\n" +
+                "  `testname` varchar(255) NULL COMMENT \"\",\n" +
                 "  `userstatus` int(11) NULL COMMENT \"\"\n" +
                 ") ENGINE=OLAP\n" +
                 "DUPLICATE KEY(`user`)\n" +
@@ -265,7 +264,7 @@ public class CreateTableAsSelectStmtTest {
         createTableAsSelect(selectFromName);
         ShowResultSet showResultSet = showCreateTable("select_union");
         Assert.assertEquals("CREATE TABLE `select_union` (\n" +
-                "  `userId` text NULL COMMENT \"\"\n" +
+                "  `userId` varchar(255) NULL COMMENT \"\"\n" +
                 ") ENGINE=OLAP\n" +
                 "DUPLICATE KEY(`userId`)\n" +
                 "COMMENT \"OLAP\"\n" +
@@ -284,7 +283,7 @@ public class CreateTableAsSelectStmtTest {
         createTableAsSelect(selectFromName);
         ShowResultSet showResultSet = showCreateTable("select_cte");
         Assert.assertEquals("CREATE TABLE `select_cte` (\n" +
-                "  `userId` text NULL COMMENT \"\"\n" +
+                "  `userId` varchar(255) NULL COMMENT \"\"\n" +
                 ") ENGINE=OLAP\n" +
                 "DUPLICATE KEY(`userId`)\n" +
                 "COMMENT \"OLAP\"\n" +
diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/UserPropertyTest.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/UserPropertyTest.java
index 0702e2157c..f82c378929 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/UserPropertyTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/UserPropertyTest.java
@@ -17,6 +17,9 @@
 
 package org.apache.doris.catalog;
 
+import mockit.Expectations;
+import mockit.Mocked;
+import org.apache.doris.blockrule.SqlBlockRuleMgr;
 import org.apache.doris.common.DdlException;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.common.Pair;
@@ -26,7 +29,9 @@ import org.apache.doris.mysql.privilege.UserProperty;
 
 import com.google.common.collect.Lists;
 
+import org.apache.doris.thrift.TStorageMedium;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
@@ -38,6 +43,42 @@ import java.util.List;
 
 public class UserPropertyTest {
     private FakeCatalog fakeCatalog;
+    @Mocked
+    private Catalog catalog;
+    @Mocked
+    private SqlBlockRuleMgr sqlBlockRuleMgr;
+
+    @Before
+    public void setUp() {
+        new Expectations(catalog) {
+            {
+                catalog.getSqlBlockRuleMgr();
+                minTimes = 0;
+                result = sqlBlockRuleMgr;
+
+                sqlBlockRuleMgr.existRule("rule1");
+                minTimes = 0;
+                result = true;
+
+                sqlBlockRuleMgr.existRule("rule2");
+                minTimes = 0;
+                result = true;
+
+                sqlBlockRuleMgr.existRule("test1");
+                minTimes = 0;
+                result = true;
+
+                sqlBlockRuleMgr.existRule("test2");
+                minTimes = 0;
+                result = true;
+
+                sqlBlockRuleMgr.existRule("test3");
+                minTimes = 0;
+                result = true;
+            }
+        };
+    }
+
     @Test
     public void testNormal() throws IOException, DdlException {
         // mock catalog
diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/ProjectPlannerFunctionTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/ProjectPlannerFunctionTest.java
index 58c87a6289..0159edba6c 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/ProjectPlannerFunctionTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/ProjectPlannerFunctionTest.java
@@ -46,7 +46,7 @@ public class ProjectPlannerFunctionTest {
         connectContext = UtFrameUtils.createDefaultCtx();
 
         // enable hash project
-        Deencapsulation.setField(connectContext.getSessionVariable(), "enableHashProject", true);
+        Deencapsulation.setField(connectContext.getSessionVariable(), "enableProjection", true);
 
         // create database
         String createDbStmtStr = "create database test;";
diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
index c127d2fd9c..f203c8dbf2 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
@@ -199,7 +199,7 @@ public class TableFunctionPlanTest {
         String sql = "explain select k1 from db1.tbl1 where explode_split(k2, \",\");";
         String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql);
         Assert.assertTrue(
-                explainString.contains("No matching function with signature: explode_split(varchar(-1), varchar(-1))."));
+                explainString.contains("No matching function with signature: explode_split(varchar(1), varchar(-1))."));
     }
 
     // test projection
@@ -340,8 +340,8 @@ public class TableFunctionPlanTest {
         Assert.assertTrue(explainString.contains("table function: explode_split(concat(`a`.`k2`, ',', `a`.`k3`), ',')"));
         Assert.assertTrue(explainString.contains("lateral view tuple id: 1"));
         Assert.assertTrue(explainString.contains("output slot id: 3"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=0, col=k2, type=VARCHAR(*)}"));
-        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=k3, type=VARCHAR(*)}"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=0, col=k2, type=VARCHAR(1)}"));
+        Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=k3, type=VARCHAR(1)}"));
     }
 
     // lateral view of subquery
@@ -398,7 +398,7 @@ public class TableFunctionPlanTest {
                         + "materialized=true"
         ));
         Assert.assertTrue(formatString.contains(
-                "SlotDescriptor{id=1,col=k2,type=VARCHAR(*)}\n"
+                "SlotDescriptor{id=1,col=k2,type=VARCHAR(1)}\n"
                         + "parent=0\n"
                         + "materialized=true"
         ));


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