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 <moailing@selectdb.com>
This commit is contained in:
github-actions[bot]
2024-11-27 20:12:12 +08:00
committed by GitHub
parent 0ffab4b4da
commit b07ea89aae
11 changed files with 548 additions and 423 deletions

View File

@ -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);

View File

@ -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));
}
}
}

View File

@ -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 + "].");
}

View File

@ -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<ColWithComment> 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;

View File

@ -428,4 +428,8 @@ public class BaseViewInfo {
return null;
}
}
protected void checkViewSql(String viewSql) {
new NereidsParser().parseSingle(viewSql);
}
}

View File

@ -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<ColWithComment> 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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"
}