[CP] fix shared expr issue in view merge/query push down
This commit is contained in:
@ -486,6 +486,8 @@ int ObTransformViewMerge::check_basic_validity(ObDMLStmt *parent_stmt,
|
||||
bool has_ref_assign_user_var = false;
|
||||
bool force_merge = false;
|
||||
bool force_no_merge = false;
|
||||
bool is_select_expr_valid = false;
|
||||
ObSEArray<ObRawExpr*, 8> select_exprs;
|
||||
if (OB_ISNULL(parent_stmt) || OB_ISNULL(child_stmt)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("get unexpected null", K(ret));
|
||||
@ -515,6 +517,13 @@ int ObTransformViewMerge::check_basic_validity(ObDMLStmt *parent_stmt,
|
||||
LOG_WARN("failed to check has rownum expr", K(ret));
|
||||
} else if (has_rownum_expr) {
|
||||
can_be = false;
|
||||
} else if (OB_FAIL(child_stmt->get_select_exprs(select_exprs))) {
|
||||
LOG_WARN("failed to get select exprs", K(ret));
|
||||
} else if (OB_FAIL(ObTransformUtils::check_expr_valid_for_stmt_merge(select_exprs,
|
||||
is_select_expr_valid))) {
|
||||
LOG_WARN("failed to check select expr valid", K(ret));
|
||||
} else if (!is_select_expr_valid) {
|
||||
can_be = false;
|
||||
} else if (0 == child_stmt->get_from_item_size()) {
|
||||
//当 view 为 select ... from dual, 若上层非层次查询, 允许视图合并
|
||||
can_be = parent_stmt->is_single_table_stmt()
|
||||
|
||||
Reference in New Issue
Block a user