From b07ea89aaee20e2264455827c92a7261cceb2187 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:12:12 +0800 Subject: [PATCH] branch-2.1: [Fix](nereids) fix create view and alter view using old parser checking #43263 (#44456) Cherry-picked from #43263 Co-authored-by: feiniaofeiafei --- .../java/org/apache/doris/alter/Alter.java | 5 - .../apache/doris/analysis/BaseViewStmt.java | 26 ++ .../java/org/apache/doris/catalog/Env.java | 7 - .../plans/commands/info/AlterViewInfo.java | 14 +- .../plans/commands/info/BaseViewInfo.java | 4 + .../plans/commands/info/CreateViewInfo.java | 11 +- .../create_view_use_mv.out | 15 + .../test_create_view_nereids.out | 397 ++++++++++++++++++ .../data/ddl_p0/test_create_view_nereids.out | 397 ------------------ .../create_view_use_mv.groovy | 95 +++++ .../test_create_view_nereids.groovy | 0 11 files changed, 548 insertions(+), 423 deletions(-) create mode 100644 regression-test/data/ddl_p0/create_view_nereids/create_view_use_mv.out create mode 100644 regression-test/data/ddl_p0/create_view_nereids/test_create_view_nereids.out delete mode 100644 regression-test/data/ddl_p0/test_create_view_nereids.out create mode 100644 regression-test/suites/ddl_p0/create_view_nereids/create_view_use_mv.groovy rename regression-test/suites/ddl_p0/{ => create_view_nereids}/test_create_view_nereids.groovy (100%) diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java index b7801cc3ba..5c0390e84e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java @@ -666,11 +666,6 @@ public class Alter { view.writeLockOrDdlException(); try { view.setInlineViewDefWithSqlMode(inlineViewDef, sqlMode); - try { - view.init(); - } catch (UserException e) { - throw new DdlException("failed to init view stmt, reason=" + e.getMessage()); - } view.setNewFullSchema(newFullSchema); String viewName = view.getName(); db.unregisterTable(viewName); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java index e265703128..d33c234af1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/BaseViewStmt.java @@ -21,20 +21,24 @@ import org.apache.doris.catalog.Column; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.Type; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.DdlException; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.ErrorReport; import org.apache.doris.common.UserException; +import org.apache.doris.common.util.SqlParserUtils; import org.apache.doris.common.util.ToSqlContext; import org.apache.doris.datasource.InternalCatalog; import org.apache.doris.mysql.privilege.PrivPredicate; import org.apache.doris.qe.ConnectContext; +import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.StringReader; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -147,6 +151,7 @@ public class BaseViewStmt extends DdlStmt { // we don't need the slot id info, so using ToSqlContext to remove it. toSqlContext.setNeedSlotRefId(false); inlineViewDef = viewDefStmt.toSql(); + checkInlineViewDef(); } return; } @@ -161,6 +166,7 @@ public class BaseViewStmt extends DdlStmt { // we don't need the slot id info, so using ToSqlContext to remove it. toSqlContext.setNeedSlotRefId(false); inlineViewDef = cloneStmt.toSql(); + checkInlineViewDef(); } } @@ -172,4 +178,24 @@ public class BaseViewStmt extends DdlStmt { throw new AnalysisException("Not support OUTFILE clause in CREATE VIEW statement"); } } + + private void checkInlineViewDef() throws UserException { + Preconditions.checkNotNull(inlineViewDef); + SqlScanner input = new SqlScanner(new StringReader(inlineViewDef), + ConnectContext.get().getSessionVariable().getSqlMode()); + SqlParser parser = new SqlParser(input); + ParseNode node; + try { + node = SqlParserUtils.getFirstStmt(parser); + } catch (Exception e) { + throw new DdlException( + String.format("Failed to parse view-definition statement of view: %s, stmt is %s, reason is %s", + tableName, inlineViewDef, e.getMessage())); + } + // Make sure the view definition parses to a query statement. + if (!(node instanceof QueryStmt)) { + throw new DdlException(String.format("View definition of %s " + + "is not a query statement", tableName)); + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index de76d445ca..a0624c407a 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -5358,13 +5358,6 @@ public class Env { newView.setComment(stmt.getComment()); newView.setInlineViewDefWithSqlMode(stmt.getInlineViewDef(), ConnectContext.get().getSessionVariable().getSqlMode()); - // init here in case the stmt string from view.toSql() has some syntax error. - try { - newView.init(); - } catch (UserException e) { - throw new DdlException("failed to init view stmt, reason=" + e.getMessage()); - } - if (!((Database) db).createTableWithLock(newView, false, stmt.isSetIfNotExists()).first) { throw new DdlException("Failed to create view[" + tableName + "]."); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AlterViewInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AlterViewInfo.java index b5e47bc077..f065e292e8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AlterViewInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AlterViewInfo.java @@ -77,18 +77,16 @@ public class AlterViewInfo extends BaseViewInfo { /**translateToLegacyStmt*/ public AlterViewStmt translateToLegacyStmt(ConnectContext ctx) { + // expand star(*) in project list and replace table name with qualifier + String rewrittenSql = rewriteSql(ctx.getStatementContext().getIndexInSqlToString(), querySql); + // rewrite project alias + rewrittenSql = rewriteProjectsToUserDefineAlias(rewrittenSql); + checkViewSql(rewrittenSql); List cols = Lists.newArrayList(); for (SimpleColumnDefinition def : simpleColumnDefinitions) { cols.add(def.translateToColWithComment()); } - AlterViewStmt alterViewStmt = new AlterViewStmt(viewName.transferToTableName(), cols, - null); - // expand star(*) in project list and replace table name with qualifier - String rewrittenSql = rewriteSql(ctx.getStatementContext().getIndexInSqlToString(), querySql); - - // rewrite project alias - rewrittenSql = rewriteProjectsToUserDefineAlias(rewrittenSql); - + AlterViewStmt alterViewStmt = new AlterViewStmt(viewName.transferToTableName(), cols, null); alterViewStmt.setInlineViewDef(rewrittenSql); alterViewStmt.setFinalColumns(finalCols); return alterViewStmt; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BaseViewInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BaseViewInfo.java index b8332a256e..ad8870fb36 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BaseViewInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/BaseViewInfo.java @@ -428,4 +428,8 @@ public class BaseViewInfo { return null; } } + + protected void checkViewSql(String viewSql) { + new NereidsParser().parseSingle(viewSql); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateViewInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateViewInfo.java index 93c287885e..c9253b224a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateViewInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateViewInfo.java @@ -72,18 +72,17 @@ public class CreateViewInfo extends BaseViewInfo { /**translateToLegacyStmt*/ public CreateViewStmt translateToLegacyStmt(ConnectContext ctx) { + // expand star(*) in project list and replace table name with qualifier + String rewrittenSql = rewriteSql(ctx.getStatementContext().getIndexInSqlToString(), querySql); + // rewrite project alias + rewrittenSql = rewriteProjectsToUserDefineAlias(rewrittenSql); + checkViewSql(rewrittenSql); List cols = Lists.newArrayList(); for (SimpleColumnDefinition def : simpleColumnDefinitions) { cols.add(def.translateToColWithComment()); } CreateViewStmt createViewStmt = new CreateViewStmt(ifNotExists, orReplace, viewName.transferToTableName(), cols, comment, null); - // expand star(*) in project list and replace table name with qualifier - String rewrittenSql = rewriteSql(ctx.getStatementContext().getIndexInSqlToString(), querySql); - - // rewrite project alias - rewrittenSql = rewriteProjectsToUserDefineAlias(rewrittenSql); - createViewStmt.setInlineViewDef(rewrittenSql); createViewStmt.setFinalColumns(finalCols); return createViewStmt; diff --git a/regression-test/data/ddl_p0/create_view_nereids/create_view_use_mv.out b/regression-test/data/ddl_p0/create_view_nereids/create_view_use_mv.out new file mode 100644 index 0000000000..c4df748402 --- /dev/null +++ b/regression-test/data/ddl_p0/create_view_nereids/create_view_use_mv.out @@ -0,0 +1,15 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !create_view_from_mv -- +\N 99.50 99.50 99.50 1 \N \N \N \N 1 \N \N +1 208.70 109.20 99.50 3 1 3 1 1 3 \N \N +2 218.40 109.20 109.20 2 2 2 2 2 1 \N \N +3 298.50 99.50 99.50 3 3 6 3 3 2 \N \N +4 99.50 99.50 99.50 1 \N 4 4 4 1 \N \N + +-- !alter_view_from_mv -- +\N 99.50 99.50 99.50 1 \N \N \N \N 1 \N \N +1 208.70 109.20 99.50 3 1 3 1 1 3 \N \N +2 218.40 109.20 109.20 2 2 2 2 2 1 \N \N +3 298.50 99.50 99.50 3 3 6 3 3 2 \N \N +4 99.50 99.50 99.50 1 \N 4 4 4 1 \N \N + diff --git a/regression-test/data/ddl_p0/create_view_nereids/test_create_view_nereids.out b/regression-test/data/ddl_p0/create_view_nereids/test_create_view_nereids.out new file mode 100644 index 0000000000..5bdfe66d5a --- /dev/null +++ b/regression-test/data/ddl_p0/create_view_nereids/test_create_view_nereids.out @@ -0,0 +1,397 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !test_view_1 -- +1 [1, 2, 3] +2 [10, -2, 8] +3 [-1, 20, 0] + +-- !test_view_2 -- +1 [1, 2, 3] [1, 1, 1] +2 [10, -2, 8] [1, 0, 1] +3 [-1, 20, 0] [0, 1, 0] + +-- !test_view_3 -- +1 [1, 2, 3] [1, 2, 3] [1, 2, 3] +2 [10, -2, 8] [10, 8] [10, 8] +3 [-1, 20, 0] [20] [20] + +-- !test_view_4 -- +1 [1, 2, 3] [1, 2, 3] [1, 2, 3] +2 [10, -2, 8] [10, 8] [10, 8] +3 [-1, 20, 0] [20] [20] + +-- !test_view_5 -- +1 [1, 2, 3] [1, 1, 1] +2 [10, -2, 8] [1, 0, 1] +3 [-1, 20, 0] [0, 1, 0] + +-- !test_view_6 -- +v1 CREATE VIEW `v1` AS SELECT\n `internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`.`error_code`, \n 1, \n 'string', \n now(), \n dayofyear(`internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`.`op_time`), \n cast (`internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`.`source` AS BIGINT), \n min(`internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`.`timestamp`) OVER (\n ORDER BY \n `internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`.`op_time` DESC ROWS BETWEEN UNBOUNDED PRECEDING\n AND 1 FOLLOWING\n ), \n 1 > 2,\n 2 + 3,\n 1 IN (1, 2, 3, 4), \n `internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`.`remark` LIKE '%like', \n CASE WHEN `internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`.`remark` = 's' THEN 1 ELSE 2 END,\n TRUE | FALSE \n FROM \n `internal`.`regression_test_ddl_p0_create_view_nereids`.`view_column_name_test_nereids`; + +-- !test_with_as -- +1 1 2 +1 1 4 +1 3 6 +2 1 3 +2 1 4 +2 1 7 +2 3 5 +2 3 9 +2 4 2 +3 2 8 +3 5 \N +3 5 6 +3 5 6 +3 5 8 +4 5 6 +6 \N 6 +6 7 1 + +-- !test_with_as_sql -- +test_view_with_as CREATE VIEW `test_view_with_as` AS (\n with `t1` as (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`), `t2` as (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`), \n `t3` as (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`) SELECT `t1`.`pk`, `t1`.`a`, `t1`.`b` FROM t1); utf8mb4 utf8mb4_0900_bin + +-- !test_union -- +1 1 2 +1 1 2 +1 1 4 +1 1 4 +1 3 6 +1 3 6 +2 1 3 +2 1 3 +2 1 4 +2 1 4 +2 1 7 +2 1 7 +2 3 5 +2 3 5 +2 3 9 +2 3 9 +2 4 2 +2 4 2 +3 2 8 +3 2 8 +3 5 \N +3 5 \N +3 5 6 +3 5 6 +3 5 6 +3 5 6 +3 5 8 +3 5 8 +4 5 6 +4 5 6 +6 \N 6 +6 \N 6 +6 7 1 +6 7 1 + +-- !test_union_sql -- +test_view_union CREATE VIEW `test_view_union` AS (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk` AS `c1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a` AS `c2`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` AS `c3` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view` Union all SELECT `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` FROM `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`); utf8mb4 utf8mb4_0900_bin + +-- !test_count_star -- +17 + +-- !test_count_star_sql -- +test_view_count_star CREATE VIEW `test_view_count_star` AS (select count(*) AS `c1` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view` having count(*) > 0); utf8mb4 utf8mb4_0900_bin + +-- !test_expression -- +\N \N 6 +2 4 2 +2 4 3 +2 4 4 +2 4 4 +2 4 7 +3 5 8 +4 6 5 +4 6 6 +4 6 9 +5 7 2 +6 8 \N +6 8 6 +6 8 6 +6 8 6 +6 8 8 +8 10 1 + +-- !test_expression_sql -- +test_view_expression CREATE VIEW `test_view_expression` AS (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`+1 AS `c1`, abs(`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`)+2+1 AS `c2`, cast(`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` as varchar(10)) AS `c3` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`); utf8mb4 utf8mb4_0900_bin + +-- !test_alias -- +\N \N 6 +2 4 2 +2 4 3 +2 4 4 +2 4 4 +2 4 7 +3 5 8 +4 6 5 +4 6 6 +4 6 9 +5 7 2 +6 8 \N +6 8 6 +6 8 6 +6 8 6 +6 8 8 +8 10 1 + +-- !test_alias_sql -- +test_view_alias CREATE VIEW `test_view_alias` AS (\n select `t`.`c8` AS `c1`, `t`.`c2` AS `c2`, `t`.`c1` AS `c3` from (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`+1 `c8`,abs(`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`)+2+1 as `c2`, cast(`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` as varchar(10)) as `c1` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`) `t`); utf8mb4 utf8mb4_0900_bin + +-- !test_star_except -- +\N 6 +1 2 +1 3 +1 4 +1 4 +1 7 +2 8 +3 5 +3 6 +3 9 +4 2 +5 \N +5 6 +5 6 +5 6 +5 8 +7 1 + +-- !test_star_except_sql -- +test_view_star_except CREATE VIEW `test_view_star_except` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`; utf8mb4 utf8mb4_0900_bin + +-- !test_create_view_from_view -- +1 1 2 +1 1 4 +1 3 6 +2 1 3 +2 1 4 +2 1 7 +2 3 5 +2 3 9 +2 4 2 +3 2 8 +3 5 \N +3 5 6 +3 5 6 +3 5 8 +4 5 6 +6 \N 6 +6 7 1 + +-- !test_create_view_from_view_sql -- +test_view_from_view CREATE VIEW `test_view_from_view` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`test_view_with_as`.`pk` AS `c1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`test_view_with_as`.`a` AS `c2`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`test_view_with_as`.`b` AS `c3` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`test_view_with_as`; utf8mb4 utf8mb4_0900_bin + +-- !test_backquote_in_view_define -- +\N 6 +1 2 +1 3 +1 4 +1 4 +1 7 +2 8 +3 5 +3 6 +3 9 +4 2 +5 \N +5 6 +5 6 +5 6 +5 8 +7 1 + +-- !test_backquote_in_view_define_sql -- +test_backquote_in_view_define CREATE VIEW `test_backquote_in_view_define` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a` AS `abc`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` AS `c2` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`; utf8mb4 utf8mb4_0900_bin + +-- !test_backquote_in_table_alias -- +\N 6 +1 2 +1 3 +1 4 +1 4 +1 7 +2 8 +3 5 +3 6 +3 9 +4 2 +5 \N +5 6 +5 6 +5 6 +5 8 +7 1 + +-- !test_backquote_in_table_alias_sql -- +test_backquote_in_table_alias CREATE VIEW `test_backquote_in_table_alias` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`ab``c`.`a` AS `c1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`ab``c`.`b` AS `c2` from (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`,`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`) `ab``c`; utf8mb4 utf8mb4_0900_bin + +-- !test_invalid_column_name_in_table -- +\N 6 +1 2 +1 3 +1 4 +1 4 +1 7 +2 8 +3 5 +3 6 +3 9 +4 2 +5 \N +5 6 +5 6 +5 6 +5 8 +7 1 + +-- !test_invalid_column_name_in_table_define_sql -- +test_invalid_column_name_in_table CREATE VIEW `test_invalid_column_name_in_table` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a` ,`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`; utf8mb4 utf8mb4_0900_bin + +-- !test_generate -- +1 10 A 30 +1 10 A 60 +2 20 B 30 +2 20 B 60 +3 30 C 30 +3 30 C 60 +4 40 D 30 +4 40 D 60 + +-- !test_generate_sql -- +test_view_generate CREATE VIEW `test_view_generate` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`value1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`value2`, `t1`.`age` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1` lateral view EXPLODE(ARRAY(30,60)) `t1` as `age`; utf8mb4 utf8mb4_0900_bin + +-- !test_generate_with_column -- +1 10 A 0 +2 20 B 0 +2 20 B 1 +3 30 C 0 +3 30 C 1 +3 30 C 2 +4 40 D 0 +4 40 D 1 +4 40 D 2 +4 40 D 3 + +-- !test_generate_with_column_sql -- +test_view_generate_with_column CREATE VIEW `test_view_generate_with_column` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`value1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`value2`, `t1`.`age` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1` lateral view EXPLODE_numbers(`internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`) `t1` as `age`; utf8mb4 utf8mb4_0900_bin + +-- !test_col_alias -- +1 10 +2 20 +3 30 +4 40 + +-- !test_col_alias_sql -- +test_view_col_alias CREATE VIEW `test_view_col_alias` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id` as `c1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`value1` as `c2` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`; utf8mb4 utf8mb4_0900_bin + +-- !test_col_alias_with_specific_name -- +1 10 +2 20 +3 30 +4 40 + +-- !test_col_alias_with_specific_name_sql -- +test_view_col_alias_specific_name CREATE VIEW `test_view_col_alias_specific_name` AS select `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id` AS `col1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`value1` AS `col2` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`; utf8mb4 utf8mb4_0900_bin + +-- !test_table_alias -- +1 10 +2 20 +3 30 +4 40 + +-- !test_table_alias_sql -- +test_view_table_alias CREATE VIEW `test_view_table_alias` AS select `t`.`c1`, `t`.`c2` from (\n select `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id` as `c1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`value1` as `c2` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1` limit 10) as `t`; utf8mb4 utf8mb4_0900_bin + +-- !test_join_table_alias -- +1 10 +2 20 +3 30 +4 40 + +-- !test_join_table_alias_sql -- +test_view_join_table_alias CREATE VIEW `test_view_join_table_alias` AS select `t`.`c1`, `t`.`c2` from (\n select `internal`.`regression_test_ddl_p0_create_view_nereids`.`t1`.`id` as `c1`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`t1`.`value1` as `c2` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1` `t1` inner join `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table2` `t2` on `internal`.`regression_test_ddl_p0_create_view_nereids`.`t1`.`id`=`internal`.`regression_test_ddl_p0_create_view_nereids`.`t2`.`id` limit 10) as `t`; utf8mb4 utf8mb4_0900_bin + +-- !test_alias_udf -- +1****1 1 +2****2 2 +3****3 3 +4****4 4 + +-- !test_alias_udf_sql -- +test_view_alias_udf CREATE VIEW `test_view_alias_udf` AS (select `regression_test_ddl_p0_create_view_nereids`.`alias_function_create_view_test`(`internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`) from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`); utf8mb4 utf8mb4_0900_bin + +-- !test_alias_with_db_udf -- +1****1 1 +2****2 2 +3****3 3 +4****4 4 + +-- !test_alias_with_db_udf_sql -- +test_view_alias_udf_with_db CREATE VIEW `test_view_alias_udf_with_db` AS (select `regression_test_ddl_p0_create_view_nereids`.`alias_function_create_view_test`(`internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`) from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`); utf8mb4 utf8mb4_0900_bin + +-- !test_udf_sql -- +test_view_udf CREATE VIEW `test_view_udf` AS (select `regression_test_ddl_p0_create_view_nereids`.`alias_function_create_view_test`(`internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`) as `c1`, `regression_test_ddl_p0_create_view_nereids`.`java_udf_create_view_test`('2011-01-01','2011-01-02'),\n `regression_test_ddl_p0_create_view_nereids`.`java_udf_create_view_test`('2011-01-01','2011-01-03') from `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`); utf8mb4 utf8mb4_0900_bin + +-- !test_udf -- +1****1 false false +2****2 false false +3****3 false false +4****4 false false + +-- !test_with_as_with_columns -- +1 1 2 +1 1 4 +1 3 6 +2 1 3 +2 1 4 +2 1 7 +2 3 5 +2 3 9 +2 4 2 +3 2 8 +3 5 \N +3 5 6 +3 5 6 +3 5 8 +4 5 6 +6 \N 6 +6 7 1 + +-- !test_with_as_with_columns_sql -- +test_view_with_as_with_columns CREATE VIEW `test_view_with_as_with_columns` AS (\n with `t1`(`c1`,`c2`,`c3`) as (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`), `t2` as (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`), \n `t3` as (select `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`) SELECT `t1`.`c1`, `t1`.`c2`, `t1`.`c3` FROM t1); utf8mb4 utf8mb4_0900_bin + +-- !test_having -- +2 2 +3 3 +4 2 +4 4 +5 5 +6 3 +7 7 +8 4 +9 3 +10 5 +14 7 +15 5 + +-- !test_having_sql -- +test_having CREATE VIEW `test_having` AS select sum(`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`) over(partition by `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a` order by `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`) as `c1` , `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a` from `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view` group by grouping sets((`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`),(`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`b`),(`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`pk`,`internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`)) having `internal`.`regression_test_ddl_p0_create_view_nereids`.`mal_test_view`.`a`>1; utf8mb4 utf8mb4_0900_bin + +-- !complicated_view1 -- +1 100 1 +2 200 1 + +-- !complicated_view1_sql -- +test_view_complicated CREATE VIEW `test_view_complicated` AS SELECT `internal`.`regression_test_ddl_p0_create_view_nereids`.`t`.`id`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`t`.`value3`, `t`.`row_num` FROM (\n SELECT `internal`.`regression_test_ddl_p0_create_view_nereids`.`t1`.`id`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`tt`.`value3`, ROW_NUMBER() OVER (PARTITION BY `internal`.`regression_test_ddl_p0_create_view_nereids`.`t1`.`id` ORDER BY `internal`.`regression_test_ddl_p0_create_view_nereids`.`tt`.`value3` DESC) as `row_num`\n FROM (SELECT `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id` FROM `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1` GROUP BY `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table1`.`id`) `t1`\n FULL OUTER JOIN (SELECT `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table2`.`value3`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table2`.`id`, MAX(`internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table2`.`value4`) FROM `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table2` GROUP BY `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table2`.`value3`, `internal`.`regression_test_ddl_p0_create_view_nereids`.`create_view_table2`.`id`) `tt`\n ON `internal`.`regression_test_ddl_p0_create_view_nereids`.`tt`.`id` = `internal`.`regression_test_ddl_p0_create_view_nereids`.`t1`.`id`\n ORDER BY `internal`.`regression_test_ddl_p0_create_view_nereids`.`t1`.`id`\n ) `t`\n WHERE `internal`.`regression_test_ddl_p0_create_view_nereids`.`t`.`value3` < 280 AND (`internal`.`regression_test_ddl_p0_create_view_nereids`.`t`.`id` < 3 or `internal`.`regression_test_ddl_p0_create_view_nereids`.`t`.`id` >8); utf8mb4 utf8mb4_0900_bin + +-- !nullable -- +1 小区A 10 1 2024-09-01T09:00 2024-09-01T10:00 +2 小区B 11 1 2024-09-01T09:00 2024-09-01T10:00 +3 小区C \N 1 2024-09-01T09:00 2024-09-01T10:00 + +-- !nullable_view_with_cols -- +1 小区A 10 1 2024-09-01T09:00 2024-09-01T10:00 +2 小区B 11 1 2024-09-01T09:00 2024-09-01T10:00 +3 小区C \N 1 2024-09-01T09:00 2024-09-01T10:00 + diff --git a/regression-test/data/ddl_p0/test_create_view_nereids.out b/regression-test/data/ddl_p0/test_create_view_nereids.out deleted file mode 100644 index 1b2ba19d93..0000000000 --- a/regression-test/data/ddl_p0/test_create_view_nereids.out +++ /dev/null @@ -1,397 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !test_view_1 -- -1 [1, 2, 3] -2 [10, -2, 8] -3 [-1, 20, 0] - --- !test_view_2 -- -1 [1, 2, 3] [1, 1, 1] -2 [10, -2, 8] [1, 0, 1] -3 [-1, 20, 0] [0, 1, 0] - --- !test_view_3 -- -1 [1, 2, 3] [1, 2, 3] [1, 2, 3] -2 [10, -2, 8] [10, 8] [10, 8] -3 [-1, 20, 0] [20] [20] - --- !test_view_4 -- -1 [1, 2, 3] [1, 2, 3] [1, 2, 3] -2 [10, -2, 8] [10, 8] [10, 8] -3 [-1, 20, 0] [20] [20] - --- !test_view_5 -- -1 [1, 2, 3] [1, 1, 1] -2 [10, -2, 8] [1, 0, 1] -3 [-1, 20, 0] [0, 1, 0] - --- !test_view_6 -- -v1 CREATE VIEW `v1` AS SELECT\n `internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`.`error_code`, \n 1, \n 'string', \n now(), \n dayofyear(`internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`.`op_time`), \n cast (`internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`.`source` AS BIGINT), \n min(`internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`.`timestamp`) OVER (\n ORDER BY \n `internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`.`op_time` DESC ROWS BETWEEN UNBOUNDED PRECEDING\n AND 1 FOLLOWING\n ), \n 1 > 2,\n 2 + 3,\n 1 IN (1, 2, 3, 4), \n `internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`.`remark` LIKE '%like', \n CASE WHEN `internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`.`remark` = 's' THEN 1 ELSE 2 END,\n TRUE | FALSE \n FROM \n `internal`.`regression_test_ddl_p0`.`view_column_name_test_nereids`; - --- !test_with_as -- -1 1 2 -1 1 4 -1 3 6 -2 1 3 -2 1 4 -2 1 7 -2 3 5 -2 3 9 -2 4 2 -3 2 8 -3 5 \N -3 5 6 -3 5 6 -3 5 8 -4 5 6 -6 \N 6 -6 7 1 - --- !test_with_as_sql -- -test_view_with_as CREATE VIEW `test_view_with_as` AS (\n with `t1` as (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`), `t2` as (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`), \n `t3` as (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`) SELECT `t1`.`pk`, `t1`.`a`, `t1`.`b` FROM t1); utf8mb4 utf8mb4_0900_bin - --- !test_union -- -1 1 2 -1 1 2 -1 1 4 -1 1 4 -1 3 6 -1 3 6 -2 1 3 -2 1 3 -2 1 4 -2 1 4 -2 1 7 -2 1 7 -2 3 5 -2 3 5 -2 3 9 -2 3 9 -2 4 2 -2 4 2 -3 2 8 -3 2 8 -3 5 \N -3 5 \N -3 5 6 -3 5 6 -3 5 6 -3 5 6 -3 5 8 -3 5 8 -4 5 6 -4 5 6 -6 \N 6 -6 \N 6 -6 7 1 -6 7 1 - --- !test_union_sql -- -test_view_union CREATE VIEW `test_view_union` AS (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk` AS `c1`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a` AS `c2`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` AS `c3` from `internal`.`regression_test_ddl_p0`.`mal_test_view` Union all SELECT `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` FROM `internal`.`regression_test_ddl_p0`.`mal_test_view`); utf8mb4 utf8mb4_0900_bin - --- !test_count_star -- -17 - --- !test_count_star_sql -- -test_view_count_star CREATE VIEW `test_view_count_star` AS (select count(*) AS `c1` from `internal`.`regression_test_ddl_p0`.`mal_test_view` having count(*) > 0); utf8mb4 utf8mb4_0900_bin - --- !test_expression -- -\N \N 6 -2 4 2 -2 4 3 -2 4 4 -2 4 4 -2 4 7 -3 5 8 -4 6 5 -4 6 6 -4 6 9 -5 7 2 -6 8 \N -6 8 6 -6 8 6 -6 8 6 -6 8 8 -8 10 1 - --- !test_expression_sql -- -test_view_expression CREATE VIEW `test_view_expression` AS (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`+1 AS `c1`, abs(`internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`)+2+1 AS `c2`, cast(`internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` as varchar(10)) AS `c3` from `internal`.`regression_test_ddl_p0`.`mal_test_view`); utf8mb4 utf8mb4_0900_bin - --- !test_alias -- -\N \N 6 -2 4 2 -2 4 3 -2 4 4 -2 4 4 -2 4 7 -3 5 8 -4 6 5 -4 6 6 -4 6 9 -5 7 2 -6 8 \N -6 8 6 -6 8 6 -6 8 6 -6 8 8 -8 10 1 - --- !test_alias_sql -- -test_view_alias CREATE VIEW `test_view_alias` AS (\n select `t`.`c8` AS `c1`, `t`.`c2` AS `c2`, `t`.`c1` AS `c3` from (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`+1 `c8`,abs(`internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`)+2+1 as `c2`, cast(`internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` as varchar(10)) as `c1` from `internal`.`regression_test_ddl_p0`.`mal_test_view`) `t`); utf8mb4 utf8mb4_0900_bin - --- !test_star_except -- -\N 6 -1 2 -1 3 -1 4 -1 4 -1 7 -2 8 -3 5 -3 6 -3 9 -4 2 -5 \N -5 6 -5 6 -5 6 -5 8 -7 1 - --- !test_star_except_sql -- -test_view_star_except CREATE VIEW `test_view_star_except` AS select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`; utf8mb4 utf8mb4_0900_bin - --- !test_create_view_from_view -- -1 1 2 -1 1 4 -1 3 6 -2 1 3 -2 1 4 -2 1 7 -2 3 5 -2 3 9 -2 4 2 -3 2 8 -3 5 \N -3 5 6 -3 5 6 -3 5 8 -4 5 6 -6 \N 6 -6 7 1 - --- !test_create_view_from_view_sql -- -test_view_from_view CREATE VIEW `test_view_from_view` AS select `internal`.`regression_test_ddl_p0`.`test_view_with_as`.`pk` AS `c1`, `internal`.`regression_test_ddl_p0`.`test_view_with_as`.`a` AS `c2`, `internal`.`regression_test_ddl_p0`.`test_view_with_as`.`b` AS `c3` from `internal`.`regression_test_ddl_p0`.`test_view_with_as`; utf8mb4 utf8mb4_0900_bin - --- !test_backquote_in_view_define -- -\N 6 -1 2 -1 3 -1 4 -1 4 -1 7 -2 8 -3 5 -3 6 -3 9 -4 2 -5 \N -5 6 -5 6 -5 6 -5 8 -7 1 - --- !test_backquote_in_view_define_sql -- -test_backquote_in_view_define CREATE VIEW `test_backquote_in_view_define` AS select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a` AS `abc`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` AS `c2` from `internal`.`regression_test_ddl_p0`.`mal_test_view`; utf8mb4 utf8mb4_0900_bin - --- !test_backquote_in_table_alias -- -\N 6 -1 2 -1 3 -1 4 -1 4 -1 7 -2 8 -3 5 -3 6 -3 9 -4 2 -5 \N -5 6 -5 6 -5 6 -5 8 -7 1 - --- !test_backquote_in_table_alias_sql -- -test_backquote_in_table_alias CREATE VIEW `test_backquote_in_table_alias` AS select `internal`.`regression_test_ddl_p0`.`ab``c`.`a` AS `c1`, `internal`.`regression_test_ddl_p0`.`ab``c`.`b` AS `c2` from (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`,`internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`) `ab``c`; utf8mb4 utf8mb4_0900_bin - --- !test_invalid_column_name_in_table -- -\N 6 -1 2 -1 3 -1 4 -1 4 -1 7 -2 8 -3 5 -3 6 -3 9 -4 2 -5 \N -5 6 -5 6 -5 6 -5 8 -7 1 - --- !test_invalid_column_name_in_table_define_sql -- -test_invalid_column_name_in_table CREATE VIEW `test_invalid_column_name_in_table` AS select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a` ,`internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`; utf8mb4 utf8mb4_0900_bin - --- !test_generate -- -1 10 A 30 -1 10 A 60 -2 20 B 30 -2 20 B 60 -3 30 C 30 -3 30 C 60 -4 40 D 30 -4 40 D 60 - --- !test_generate_sql -- -test_view_generate CREATE VIEW `test_view_generate` AS select `internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`, `internal`.`regression_test_ddl_p0`.`create_view_table1`.`value1`, `internal`.`regression_test_ddl_p0`.`create_view_table1`.`value2`, `t1`.`age` from `internal`.`regression_test_ddl_p0`.`create_view_table1` lateral view EXPLODE(ARRAY(30,60)) `t1` as `age`; utf8mb4 utf8mb4_0900_bin - --- !test_generate_with_column -- -1 10 A 0 -2 20 B 0 -2 20 B 1 -3 30 C 0 -3 30 C 1 -3 30 C 2 -4 40 D 0 -4 40 D 1 -4 40 D 2 -4 40 D 3 - --- !test_generate_with_column_sql -- -test_view_generate_with_column CREATE VIEW `test_view_generate_with_column` AS select `internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`, `internal`.`regression_test_ddl_p0`.`create_view_table1`.`value1`, `internal`.`regression_test_ddl_p0`.`create_view_table1`.`value2`, `t1`.`age` from `internal`.`regression_test_ddl_p0`.`create_view_table1` lateral view EXPLODE_numbers(`internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`) `t1` as `age`; utf8mb4 utf8mb4_0900_bin - --- !test_col_alias -- -1 10 -2 20 -3 30 -4 40 - --- !test_col_alias_sql -- -test_view_col_alias CREATE VIEW `test_view_col_alias` AS select `internal`.`regression_test_ddl_p0`.`create_view_table1`.`id` as `c1`, `internal`.`regression_test_ddl_p0`.`create_view_table1`.`value1` as `c2` from `internal`.`regression_test_ddl_p0`.`create_view_table1`; utf8mb4 utf8mb4_0900_bin - --- !test_col_alias_with_specific_name -- -1 10 -2 20 -3 30 -4 40 - --- !test_col_alias_with_specific_name_sql -- -test_view_col_alias_specific_name CREATE VIEW `test_view_col_alias_specific_name` AS select `internal`.`regression_test_ddl_p0`.`create_view_table1`.`id` AS `col1`, `internal`.`regression_test_ddl_p0`.`create_view_table1`.`value1` AS `col2` from `internal`.`regression_test_ddl_p0`.`create_view_table1`; utf8mb4 utf8mb4_0900_bin - --- !test_table_alias -- -1 10 -2 20 -3 30 -4 40 - --- !test_table_alias_sql -- -test_view_table_alias CREATE VIEW `test_view_table_alias` AS select `t`.`c1`, `t`.`c2` from (\n select `internal`.`regression_test_ddl_p0`.`create_view_table1`.`id` as `c1`, `internal`.`regression_test_ddl_p0`.`create_view_table1`.`value1` as `c2` from `internal`.`regression_test_ddl_p0`.`create_view_table1` limit 10) as `t`; utf8mb4 utf8mb4_0900_bin - --- !test_join_table_alias -- -1 10 -2 20 -3 30 -4 40 - --- !test_join_table_alias_sql -- -test_view_join_table_alias CREATE VIEW `test_view_join_table_alias` AS select `t`.`c1`, `t`.`c2` from (\n select `internal`.`regression_test_ddl_p0`.`t1`.`id` as `c1`, `internal`.`regression_test_ddl_p0`.`t1`.`value1` as `c2` from `internal`.`regression_test_ddl_p0`.`create_view_table1` `t1` inner join `internal`.`regression_test_ddl_p0`.`create_view_table2` `t2` on `internal`.`regression_test_ddl_p0`.`t1`.`id`=`internal`.`regression_test_ddl_p0`.`t2`.`id` limit 10) as `t`; utf8mb4 utf8mb4_0900_bin - --- !test_alias_udf -- -1****1 1 -2****2 2 -3****3 3 -4****4 4 - --- !test_alias_udf_sql -- -test_view_alias_udf CREATE VIEW `test_view_alias_udf` AS (select `regression_test_ddl_p0`.`alias_function_create_view_test`(`internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`) from `internal`.`regression_test_ddl_p0`.`create_view_table1`); utf8mb4 utf8mb4_0900_bin - --- !test_alias_with_db_udf -- -1****1 1 -2****2 2 -3****3 3 -4****4 4 - --- !test_alias_with_db_udf_sql -- -test_view_alias_udf_with_db CREATE VIEW `test_view_alias_udf_with_db` AS (select `regression_test_ddl_p0`.`alias_function_create_view_test`(`internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`) as `c1`,abs(`internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`) from `internal`.`regression_test_ddl_p0`.`create_view_table1`); utf8mb4 utf8mb4_0900_bin - --- !test_udf_sql -- -test_view_udf CREATE VIEW `test_view_udf` AS (select `regression_test_ddl_p0`.`alias_function_create_view_test`(`internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`) as `c1`, `regression_test_ddl_p0`.`java_udf_create_view_test`('2011-01-01','2011-01-02'),\n `regression_test_ddl_p0`.`java_udf_create_view_test`('2011-01-01','2011-01-03') from `internal`.`regression_test_ddl_p0`.`create_view_table1`); utf8mb4 utf8mb4_0900_bin - --- !test_udf -- -1****1 false false -2****2 false false -3****3 false false -4****4 false false - --- !test_with_as_with_columns -- -1 1 2 -1 1 4 -1 3 6 -2 1 3 -2 1 4 -2 1 7 -2 3 5 -2 3 9 -2 4 2 -3 2 8 -3 5 \N -3 5 6 -3 5 6 -3 5 8 -4 5 6 -6 \N 6 -6 7 1 - --- !test_with_as_with_columns_sql -- -test_view_with_as_with_columns CREATE VIEW `test_view_with_as_with_columns` AS (\n with `t1`(`c1`,`c2`,`c3`) as (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`), `t2` as (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`), \n `t3` as (select `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`, `internal`.`regression_test_ddl_p0`.`mal_test_view`.`b` from `internal`.`regression_test_ddl_p0`.`mal_test_view`) SELECT `t1`.`c1`, `t1`.`c2`, `t1`.`c3` FROM t1); utf8mb4 utf8mb4_0900_bin - --- !test_having -- -2 2 -3 3 -4 2 -4 4 -5 5 -6 3 -7 7 -8 4 -9 3 -10 5 -14 7 -15 5 - --- !test_having_sql -- -test_having CREATE VIEW `test_having` AS select sum(`internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`) over(partition by `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a` order by `internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`) as `c1` , `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a` from `internal`.`regression_test_ddl_p0`.`mal_test_view` group by grouping sets((`internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`),(`internal`.`regression_test_ddl_p0`.`mal_test_view`.`b`),(`internal`.`regression_test_ddl_p0`.`mal_test_view`.`pk`,`internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`)) having `internal`.`regression_test_ddl_p0`.`mal_test_view`.`a`>1; utf8mb4 utf8mb4_0900_bin - --- !complicated_view1 -- -1 100 1 -2 200 1 - --- !complicated_view1_sql -- -test_view_complicated CREATE VIEW `test_view_complicated` AS SELECT `internal`.`regression_test_ddl_p0`.`t`.`id`, `internal`.`regression_test_ddl_p0`.`t`.`value3`, `t`.`row_num` FROM (\n SELECT `internal`.`regression_test_ddl_p0`.`t1`.`id`, `internal`.`regression_test_ddl_p0`.`tt`.`value3`, ROW_NUMBER() OVER (PARTITION BY `internal`.`regression_test_ddl_p0`.`t1`.`id` ORDER BY `internal`.`regression_test_ddl_p0`.`tt`.`value3` DESC) as `row_num`\n FROM (SELECT `internal`.`regression_test_ddl_p0`.`create_view_table1`.`id` FROM `internal`.`regression_test_ddl_p0`.`create_view_table1` GROUP BY `internal`.`regression_test_ddl_p0`.`create_view_table1`.`id`) `t1`\n FULL OUTER JOIN (SELECT `internal`.`regression_test_ddl_p0`.`create_view_table2`.`value3`, `internal`.`regression_test_ddl_p0`.`create_view_table2`.`id`, MAX(`internal`.`regression_test_ddl_p0`.`create_view_table2`.`value4`) FROM `internal`.`regression_test_ddl_p0`.`create_view_table2` GROUP BY `internal`.`regression_test_ddl_p0`.`create_view_table2`.`value3`, `internal`.`regression_test_ddl_p0`.`create_view_table2`.`id`) `tt`\n ON `internal`.`regression_test_ddl_p0`.`tt`.`id` = `internal`.`regression_test_ddl_p0`.`t1`.`id`\n ORDER BY `internal`.`regression_test_ddl_p0`.`t1`.`id`\n ) `t`\n WHERE `internal`.`regression_test_ddl_p0`.`t`.`value3` < 280 AND (`internal`.`regression_test_ddl_p0`.`t`.`id` < 3 or `internal`.`regression_test_ddl_p0`.`t`.`id` >8); utf8mb4 utf8mb4_0900_bin - --- !nullable -- -1 小区A 10 1 2024-09-01T09:00 2024-09-01T10:00 -2 小区B 11 1 2024-09-01T09:00 2024-09-01T10:00 -3 小区C \N 1 2024-09-01T09:00 2024-09-01T10:00 - --- !nullable_view_with_cols -- -1 小区A 10 1 2024-09-01T09:00 2024-09-01T10:00 -2 小区B 11 1 2024-09-01T09:00 2024-09-01T10:00 -3 小区C \N 1 2024-09-01T09:00 2024-09-01T10:00 - diff --git a/regression-test/suites/ddl_p0/create_view_nereids/create_view_use_mv.groovy b/regression-test/suites/ddl_p0/create_view_nereids/create_view_use_mv.groovy new file mode 100644 index 0000000000..295b195aa5 --- /dev/null +++ b/regression-test/suites/ddl_p0/create_view_nereids/create_view_use_mv.groovy @@ -0,0 +1,95 @@ +// 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_use_mv") { + sql "drop table if exists orders" + sql """create table orders ( o_orderkey bigint null, o_custkey int null, o_orderstatus varchar(1) null, + o_totalprice decimal(15,2) null, o_orderpriority varchar(15) null, o_clerk varchar(15) null, o_shippriority int null, + o_comment varchar(79) null, o_orderdate date not null) engine=olap duplicate key(o_orderkey,o_custkey) + comment 'olap' distributed by hash(o_orderkey) buckets 96 properties("replication_num"="1")""" + + sql "drop table if exists lineitem" + sql """create table lineitem ( + l_orderkey bigint null, l_linenumber int null, l_partkey int null, l_suppkey int null, l_quantity decimal(15,2) null,l_extendedprice decimal(15,2) null, + l_discount decimal(15,2) null, l_tax decimal(15,2) null, l_returnflag varchar(1) null, l_linestatus varchar(1) null, l_commitdate date null, l_receiptdate date null, + l_shipnstruct varchar(25) null, l_shipmode varchar(10) null, l_comment varchar(44) null,l_shipdate date not null) engine=olap + duplicate key(l_orderkey, l_linenumber,l_partkey, l_suppkey) + distributed by hash(l_orderkey) buckets 96 + properties("replication_num"="1");""" + + sql """insert into orders values (null, 1, 'k', 99.5, 'a', 'b', 1, 'yy', '2023-10-17'),(1, null, 'o', 109.2, 'c','d',2, 'mm', '2023-10-17'), + (3, 3, null, 99.5, 'a', 'b', 1, 'yy', '2023-10-19'), + (1, 2, 'o', null, 'a', 'b', 1, 'yy', '2023-10-20'), + (2, 3, 'k', 109.2, null,'d',2, 'mm', '2023-10-21'), + (3, 1, 'k', 99.5, 'a', null, 1, 'yy', '2023-10-22'), + (1, 3, 'o', 99.5, 'a', 'b', null, 'yy', '2023-10-19'), + (2, 1, 'o', 109.2, 'c','d',2, null, '2023-10-18'), + (3, 2, 'k', 99.5, 'a', 'b', 1, 'yy', '2023-10-17'), + (4, 5, 'k', 99.5, 'a', 'b', 1, 'yy', '2023-10-19');""" + + sql """insert into lineitem values(null, 1, 2, 3, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy', '2023-10-17'),(1, null, 3, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-10-17'), + (3, 3, null, 2, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', '2023-10-19', 'c', 'd', 'xxxxxxxxx', '2023-10-19'), + (1, 2, 3, null, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy', '2023-10-17'), + (2, 3, 2, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', null, '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-10-18'), + (3, 1, 1, 2, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', null, 'c', 'd', 'xxxxxxxxx', '2023-10-19'), + (1, 3, 2, 2, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy', '2023-10-17');""" + + createMV(""" + CREATE MATERIALIZED VIEW t_mv_mv AS select + o_orderkey, + sum(o_totalprice) as sum_total, + max(o_totalprice) as max_total, + min(o_totalprice) as min_total, + count(*) as count_all, + bitmap_union(to_bitmap(case when o_shippriority > 1 and o_orderkey IN (1, 3) then o_custkey else null end)) cnt_1, + bitmap_union(to_bitmap(case when o_shippriority > 2 and o_orderkey IN (2) then o_custkey else null end)) as cnt_2 + from orders group by o_orderkey + """) + + sql "drop view if exists t_mv_v_view" + sql """CREATE VIEW t_mv_v_view (k1, k2, k3, k4, k5, k6, v1, v2, v3, v4, v5, v6) as + select `mv_o_orderkey` as k1, `mva_SUM__``o_totalprice``` as k2, `mva_MAX__``o_totalprice``` as k3, + `mva_MIN__``o_totalprice``` as k4, `mva_SUM__CASE WHEN 1 IS NULL THEN 0 ELSE 1 END` as k5, l_orderkey, + sum(`mv_o_orderkey`) as sum_total, + max(`mv_o_orderkey`) as max_total, + min(`mv_o_orderkey`) as min_total, + count(`mva_SUM__``o_totalprice```) as count_all, + bitmap_union(to_bitmap(case when mv_o_orderkey > 1 then `mva_SUM__``o_totalprice``` else null end)) cnt_1, + bitmap_union(to_bitmap(case when mv_o_orderkey > 2 then `mva_MAX__``o_totalprice``` else null end)) as cnt_2 + from orders index t_mv_mv + left join lineitem on lineitem.l_orderkey = orders.mv_o_orderkey + group by + k1, k2, k3, k4, k5, l_orderkey, mv_o_orderkey""" + qt_create_view_from_mv "select * from t_mv_v_view order by 1" + + sql "drop view if exists v_for_alter" + sql "CREATE VIEW v_for_alter AS SELECT * FROM orders" + sql """ALTER VIEW v_for_alter as + select `mv_o_orderkey` as k1, `mva_SUM__``o_totalprice``` as k2, `mva_MAX__``o_totalprice``` as k3, + `mva_MIN__``o_totalprice``` as k4, `mva_SUM__CASE WHEN 1 IS NULL THEN 0 ELSE 1 END` as k5, l_orderkey, + sum(`mv_o_orderkey`) as sum_total, + max(`mv_o_orderkey`) as max_total, + min(`mv_o_orderkey`) as min_total, + count(`mva_SUM__``o_totalprice```) as count_all, + bitmap_union(to_bitmap(case when mv_o_orderkey > 1 then `mva_SUM__``o_totalprice``` else null end)) cnt_1, + bitmap_union(to_bitmap(case when mv_o_orderkey > 2 then `mva_MAX__``o_totalprice``` else null end)) as cnt_2 + from orders index t_mv_mv + left join lineitem on lineitem.l_orderkey = orders.mv_o_orderkey + group by + k1, k2, k3, k4, k5, l_orderkey, mv_o_orderkey""" + qt_alter_view_from_mv "select * from v_for_alter order by 1" +} \ No newline at end of file diff --git a/regression-test/suites/ddl_p0/test_create_view_nereids.groovy b/regression-test/suites/ddl_p0/create_view_nereids/test_create_view_nereids.groovy similarity index 100% rename from regression-test/suites/ddl_p0/test_create_view_nereids.groovy rename to regression-test/suites/ddl_p0/create_view_nereids/test_create_view_nereids.groovy