fix bug that cause be decorrelated exprs
This commit is contained in:
parent
f46cc5847d
commit
ae4654df37
@ -1393,7 +1393,9 @@ int ObWhereSubQueryPullup::unnest_single_set_subquery(ObDMLStmt *stmt,
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
if (OB_FAIL(subquery->get_select_exprs(select_list))) {
|
||||
if (OB_FAIL(ObTransformUtils::decorrelate(subquery, query_expr->get_exec_params()))) {
|
||||
LOG_WARN("failed to decorrelate subquery", K(ret));
|
||||
} else if (OB_FAIL(subquery->get_select_exprs(select_list))) {
|
||||
LOG_WARN("failed to get select exprs", K(ret));
|
||||
} else if (OB_UNLIKELY(query_refs.count() != select_list.count())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
@ -1407,8 +1409,6 @@ int ObWhereSubQueryPullup::unnest_single_set_subquery(ObDMLStmt *stmt,
|
||||
LOG_WARN("failed to merge tables to parent stmt", K(ret));
|
||||
} else if (OB_FAIL(trans_from_list(stmt, subquery, param.use_outer_join_))) {
|
||||
LOG_WARN("failed to transform from list", K(ret));
|
||||
} else if (OB_FAIL(ObTransformUtils::decorrelate(subquery, query_expr->get_exec_params()))) {
|
||||
LOG_WARN("failed to decorrelate subquery", K(ret));
|
||||
} else if (OB_FAIL(append(stmt->get_part_exprs(), subquery->get_part_exprs()))) {
|
||||
LOG_WARN("failed to append part expr", K(ret));
|
||||
} else if (OB_FAIL(append(stmt->get_check_constraint_items(),
|
||||
@ -1421,15 +1421,10 @@ int ObWhereSubQueryPullup::unnest_single_set_subquery(ObDMLStmt *stmt,
|
||||
LOG_WARN("failed to merge subquery stmt hint", K(ret));
|
||||
} else if (OB_FAIL(ObOptimizerUtil::remove_item(stmt->get_subquery_exprs(), query_expr))) {
|
||||
LOG_WARN("remove expr failed", K(ret));
|
||||
} else {
|
||||
select_list.reuse();
|
||||
if (OB_FAIL(subquery->get_select_exprs(select_list))) {
|
||||
LOG_WARN("failed to get select exprs", K(ret));
|
||||
} else if (OB_FAIL(stmt->replace_relation_exprs(query_refs, select_list))) {
|
||||
LOG_WARN("failed to replace inner stmt expr", K(ret));
|
||||
} else if (OB_FAIL(stmt->formalize_stmt(ctx_->session_info_))) {
|
||||
LOG_WARN("failed to formalize stmt", K(ret));
|
||||
}
|
||||
} else if (OB_FAIL(stmt->replace_relation_exprs(query_refs, select_list))) {
|
||||
LOG_WARN("failed to replace inner stmt expr", K(ret));
|
||||
} else if (OB_FAIL(stmt->formalize_stmt(ctx_->session_info_))) {
|
||||
LOG_WARN("failed to formalize stmt", K(ret));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user