This is an automated email from the ASF dual-hosted git repository. starocean999 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 c6b766722be [Fix](planner) fix create view star except and modify cast to sql (#33726) c6b766722be is described below commit c6b766722beb669462f74b70f13745f53ed195e1 Author: feiniaofeiafei <53502832+feiniaofeia...@users.noreply.github.com> AuthorDate: Fri Apr 19 10:43:54 2024 +0800 [Fix](planner) fix create view star except and modify cast to sql (#33726) --- .../java/org/apache/doris/catalog/ScalarType.java | 2 +- .../java/org/apache/doris/analysis/CastExpr.java | 2 +- .../java/org/apache/doris/analysis/SelectStmt.java | 7 ++-- .../analysis/CreateTableAsSelectStmtTest.java | 4 +- .../doris/planner/TableFunctionPlanTest.java | 2 +- .../create_view_star_except_and_cast_to_sql.out | 11 ++++++ .../create_view_star_except_and_cast_to_sql.groovy | 45 ++++++++++++++++++++++ 7 files changed, 64 insertions(+), 9 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java index adf064c0000..8e8a66849e2 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java @@ -626,7 +626,7 @@ public class ScalarType extends Type { break; case VARCHAR: if (isWildcardVarchar()) { - stringBuilder.append("VARCHAR(*)"); + return "VARCHAR(" + MAX_VARCHAR_LENGTH + ")"; } else if (Strings.isNullOrEmpty(lenStr)) { stringBuilder.append("VARCHAR").append("(").append(len).append(")"); } else { diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java index d2437fbd95c..739901b7929 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java @@ -213,7 +213,7 @@ public class CastExpr extends Expr { return getChild(0).toSql(); } if (isAnalyzed) { - return "CAST(" + getChild(0).toSql() + " AS " + type.toString() + ")"; + return "CAST(" + getChild(0).toSql() + " AS " + type.toSql() + ")"; } else { return "CAST(" + getChild(0).toSql() + " AS " + (isImplicit ? type.toString() : targetTypeDef.toSql()) + ")"; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java index 0b8e6070524..efe275c50d1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java @@ -541,6 +541,9 @@ public class SelectStmt extends QueryStmt { } // populate selectListExprs, aliasSMap, groupingSmap and colNames if (selectList.isExcept()) { + if (needToSql) { + originalExpr = new ArrayList<>(); + } List<SelectListItem> items = selectList.getItems(); TableName tblName = items.get(0).getTblName(); if (tblName == null) { @@ -561,10 +564,6 @@ public class SelectStmt extends QueryStmt { // remove excepted columns resultExprs.removeIf(expr -> exceptCols.contains(expr.toColumnLabel())); colLabels.removeIf(exceptCols::contains); - if (needToSql) { - originalExpr = Expr.cloneList(resultExprs); - } - } else { if (needToSql) { originalExpr = new ArrayList<>(); 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 ca4233e17cf..be1ddf7bc4a 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 @@ -688,8 +688,8 @@ public class CreateTableAsSelectStmtTest extends TestWithFeService { String showStr = showResultSet.getResultRows().get(0).get(1); Assertions.assertEquals( "CREATE TABLE `varchar_len1` (\n" - + " `__literal_0` VARCHAR(*) NULL,\n" - + " `__concat_1` VARCHAR(*) NULL,\n" + + " `__literal_0` VARCHAR(65533) NULL,\n" + + " `__concat_1` VARCHAR(65533) NULL,\n" + " `userId` VARCHAR(255) NOT NULL\n" + ") ENGINE=OLAP\n" + "DUPLICATE KEY(`__literal_0`)\n" 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 df6d4032055..c50d573de9b 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 @@ -203,7 +203,7 @@ public class TableFunctionPlanTest { String sql = "explain select /*+ SET_VAR(enable_nereids_planner=false) */ k1 from db1.tbl1 where explode_split(k2, \",\");"; String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql); Assert.assertTrue(explainString, - explainString.contains("No matching function with signature: explode_split(VARCHAR(1), VARCHAR(*)).")); + explainString.contains("No matching function with signature: explode_split(VARCHAR(1), VARCHAR(65533)).")); } // test projection diff --git a/regression-test/data/view_p0/create_view_star_except_and_cast_to_sql.out b/regression-test/data/view_p0/create_view_star_except_and_cast_to_sql.out new file mode 100644 index 00000000000..86b7fd3a658 --- /dev/null +++ b/regression-test/data/view_p0/create_view_star_except_and_cast_to_sql.out @@ -0,0 +1,11 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !test_select_star_except -- +1 1 +2 1 +3 5 +4 5 +6 \N + +-- !test_sql -- +v_mal_old_create_view2 CREATE VIEW `v_mal_old_create_view2` COMMENT 'VIEW' AS SELECT CAST(CAST(`a` AS TEXT) AS TIME(0)) AS `__cast_expr_0` FROM `regression_test_view_p0`.`mal_old_create_view`; utf8mb4 utf8mb4_0900_bin + diff --git a/regression-test/suites/view_p0/create_view_star_except_and_cast_to_sql.groovy b/regression-test/suites/view_p0/create_view_star_except_and_cast_to_sql.groovy new file mode 100644 index 00000000000..e22f929544b --- /dev/null +++ b/regression-test/suites/view_p0/create_view_star_except_and_cast_to_sql.groovy @@ -0,0 +1,45 @@ +// 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("create_view_star_except_and_cast_to_sql") { + sql "SET enable_nereids_planner=false;" + + sql """ + DROP TABLE IF EXISTS mal_old_create_view + """ + sql """ + create table mal_old_create_view(pk int, a int, b int) distributed by hash(pk) buckets 10 + properties('replication_num' = '1'); + """ + + sql """ + insert into mal_old_create_view values(2,1,3),(1,1,2),(3,5,6),(6,null,6),(4,5,6); + """ + sql "sync" + sql "drop view if EXISTS v_mal_old_create_view" + + sql "create view v_mal_old_create_view as select * except(a) from mal_old_create_view" + + qt_test_select_star_except "select * from v_mal_old_create_view order by pk,b" + + sql "drop view if EXISTS v_mal_old_create_view2" + + sql "create view v_mal_old_create_view2 as select cast(cast(a as string) as time) from mal_old_create_view" + qt_test_sql "show create view v_mal_old_create_view2" + sql "select * from v_mal_old_create_view2" + +} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org