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