diff --git a/src/sql/rewrite/ob_transform_temp_table.cpp b/src/sql/rewrite/ob_transform_temp_table.cpp index a014cf55e4..8e6b4774ff 100644 --- a/src/sql/rewrite/ob_transform_temp_table.cpp +++ b/src/sql/rewrite/ob_transform_temp_table.cpp @@ -1290,10 +1290,10 @@ int ObTransformTempTable::apply_temp_table(ObSelectStmt *parent_stmt, if (OB_ISNULL(view_select)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpect null select expr", K(ret)); - } else if (OB_ISNULL(col_expr = parent_stmt->get_column_expr_by_id(view_table->table_id_, + } else if (NULL == (col_expr = parent_stmt->get_column_expr_by_id(view_table->table_id_, i + OB_APP_MIN_COLUMN_ID))) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("expect column expr", K(i), K(ret)); + // unused select item, skip following procedure + find = true; } else if (OB_FAIL(old_column_exprs.push_back(col_expr))) { LOG_WARN("failed to push back expr", K(ret)); } diff --git a/src/sql/rewrite/ob_transform_utils.cpp b/src/sql/rewrite/ob_transform_utils.cpp index 7239c725be..acf067978f 100644 --- a/src/sql/rewrite/ob_transform_utils.cpp +++ b/src/sql/rewrite/ob_transform_utils.cpp @@ -7050,10 +7050,18 @@ int ObTransformUtils::generate_select_list(ObTransformerCtx *ctx, LOG_WARN("failed to remove const exprs", K(ret)); } else if (OB_FAIL(append(select_exprs, shared_exprs))) { LOG_WARN("failed to append", K(ret)); + } else if (select_exprs.empty()) { + if (OB_FAIL(create_dummy_select_item(*view_stmt, ctx))) { + LOG_WARN("Failed to create dummy select item", K(ret)); + } } else if (OB_FAIL(create_columns_for_view(ctx, *table, stmt, select_exprs, column_exprs))) { LOG_WARN("failed to create columns for view", K(ret)); } else if (OB_FAIL(stmt->replace_relation_exprs(select_exprs, column_exprs))) { LOG_WARN("failed to replace inner stmt expr", K(ret)); + } + + if (OB_FAIL(ret)) { + // do nothing } else if (OB_FAIL(stmt->adjust_subquery_list())) { LOG_WARN("failed to adjust subquery list", K(ret)); } else if (OB_FAIL(adjust_pseudo_column_like_exprs(*stmt))) { diff --git a/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result index 936fe23966..359f012719 100644 --- a/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result +++ b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result @@ -2479,10 +2479,10 @@ Outputs & filters: conds(nil), nl_params_(nil), batch_join=false 5 - output(nil), filter(nil), rowset=256 access(nil) - 6 - output(nil), filter(nil), rowset=256 + 6 - output([UNION([1])]), filter(nil), rowset=256 limit(1), offset(nil) - 7 - output(nil), filter(nil), rowset=256 - 8 - output(nil), filter(nil), rowset=256 + 7 - output([UNION([1])]), filter(nil), rowset=256 + 8 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 9 - output(nil), filter(nil), rowset=256 equal_conds([a.c1 = b.d1]), other_conds(nil) @@ -2494,7 +2494,7 @@ Outputs & filters: access([b.d1]), partitions(p0) is_index_back=false, is_global_index=false, range_key([b.__pk_increment]), range(MIN ; MAX)always true - 12 - output(nil), filter(nil), rowset=256 + 12 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 13 - output(nil), filter(nil), rowset=256 equal_conds([a.c1 = b.d1]), other_conds([lnnvl(cast(a.c1 = b.d1, TINYINT(-1, 0)))]) @@ -2509,10 +2509,10 @@ Outputs & filters: 16 - output(nil), filter(nil), rowset=256 17 - output(nil), filter(nil), rowset=256 access(nil) - 18 - output(nil), filter(nil), rowset=256 + 18 - output([UNION([1])]), filter(nil), rowset=256 limit(1), offset(nil) - 19 - output(nil), filter(nil), rowset=256 - 20 - output(nil), filter(nil), rowset=256 + 19 - output([UNION([1])]), filter(nil), rowset=256 + 20 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 21 - output(nil), filter(nil), rowset=256 equal_conds([a.c2 = b.d1]), other_conds(nil) @@ -2524,7 +2524,7 @@ Outputs & filters: access([b.d1]), partitions(p0) is_index_back=false, is_global_index=false, range_key([b.__pk_increment]), range(MIN ; MAX)always true - 24 - output(nil), filter(nil), rowset=256 + 24 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 25 - output(nil), filter(nil), rowset=256 equal_conds([a.c2 = b.d1]), other_conds([lnnvl(cast(a.c1 = b.d1, TINYINT(-1, 0)))]) @@ -2611,10 +2611,10 @@ Outputs & filters: conds(nil), nl_params_(nil), batch_join=false 5 - output(nil), filter(nil), rowset=256 access(nil) - 6 - output(nil), filter(nil), rowset=256 + 6 - output([UNION([1])]), filter(nil), rowset=256 limit(1), offset(nil) - 7 - output(nil), filter(nil), rowset=256 - 8 - output(nil), filter(nil), rowset=256 + 7 - output([UNION([1])]), filter(nil), rowset=256 + 8 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 9 - output(nil), filter(nil), rowset=256 equal_conds([a.c1 = b.d1]), other_conds(nil) @@ -2626,7 +2626,7 @@ Outputs & filters: access([b.d1]), partitions(p0) is_index_back=false, is_global_index=false, range_key([b.__pk_increment]), range(MIN ; MAX)always true - 12 - output(nil), filter(nil), rowset=256 + 12 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 13 - output(nil), filter(nil), rowset=256 equal_conds([a.c1 = b.d1]), other_conds([lnnvl(cast(a.c1 = b.d1, TINYINT(-1, 0)))]) @@ -2641,10 +2641,10 @@ Outputs & filters: 16 - output(nil), filter(nil), rowset=256 17 - output(nil), filter(nil), rowset=256 access(nil) - 18 - output(nil), filter(nil), rowset=256 + 18 - output([UNION([1])]), filter(nil), rowset=256 limit(1), offset(nil) - 19 - output(nil), filter(nil), rowset=256 - 20 - output(nil), filter(nil), rowset=256 + 19 - output([UNION([1])]), filter(nil), rowset=256 + 20 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 21 - output(nil), filter(nil), rowset=256 equal_conds([a.c2 = b.d1]), other_conds(nil) @@ -2656,7 +2656,7 @@ Outputs & filters: access([b.d1]), partitions(p0) is_index_back=false, is_global_index=false, range_key([b.__pk_increment]), range(MIN ; MAX)always true - 24 - output(nil), filter(nil), rowset=256 + 24 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 25 - output(nil), filter(nil), rowset=256 equal_conds([a.c2 = b.d1]), other_conds([lnnvl(cast(a.c1 = b.d1, TINYINT(-1, 0)))]) @@ -2743,10 +2743,10 @@ Outputs & filters: conds(nil), nl_params_(nil), batch_join=false 5 - output(nil), filter(nil), rowset=256 access(nil) - 6 - output(nil), filter(nil), rowset=256 + 6 - output([UNION([1])]), filter(nil), rowset=256 limit(1), offset(nil) - 7 - output(nil), filter(nil), rowset=256 - 8 - output(nil), filter(nil), rowset=256 + 7 - output([UNION([1])]), filter(nil), rowset=256 + 8 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 9 - output(nil), filter(nil), rowset=256 equal_conds([a.c1 = b.d1]), other_conds(nil) @@ -2758,7 +2758,7 @@ Outputs & filters: access([b.d1]), partitions(p0) is_index_back=false, is_global_index=false, range_key([b.__pk_increment]), range(MIN ; MAX)always true - 12 - output(nil), filter(nil), rowset=256 + 12 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 13 - output(nil), filter(nil), rowset=256 equal_conds([a.c1 = b.d1]), other_conds([lnnvl(cast(a.c1 = b.d1, TINYINT(-1, 0)))]) @@ -2773,10 +2773,10 @@ Outputs & filters: 16 - output(nil), filter(nil), rowset=256 17 - output(nil), filter(nil), rowset=256 access(nil) - 18 - output(nil), filter(nil), rowset=256 + 18 - output([UNION([1])]), filter(nil), rowset=256 limit(1), offset(nil) - 19 - output(nil), filter(nil), rowset=256 - 20 - output(nil), filter(nil), rowset=256 + 19 - output([UNION([1])]), filter(nil), rowset=256 + 20 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 21 - output(nil), filter(nil), rowset=256 equal_conds([a.c2 = b.d1]), other_conds(nil) @@ -2788,7 +2788,7 @@ Outputs & filters: access([b.d1]), partitions(p0) is_index_back=false, is_global_index=false, range_key([b.__pk_increment]), range(MIN ; MAX)always true - 24 - output(nil), filter(nil), rowset=256 + 24 - output([1]), filter(nil), rowset=256 limit(1), offset(nil) 25 - output(nil), filter(nil), rowset=256 equal_conds([a.c2 = b.d1]), other_conds([lnnvl(cast(a.c1 = b.d1, TINYINT(-1, 0)))]) diff --git a/tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result b/tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result index 31a4440d07..92d0ace87c 100644 --- a/tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result +++ b/tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result @@ -221,7 +221,7 @@ Outputs & filters: 3 - output(nil), filter(nil), rowset=256 4 - output(nil), filter(nil), rowset=256 access(nil) - 5 - output(nil), filter(nil), rowset=256 + 5 - output([1]), filter(nil), rowset=256 access(nil), partitions(p0) limit(1), offset(nil), is_index_back=false, is_global_index=false, range_key([t3.__pk_increment]), range(MIN ; MAX)always true