fix some outline bugs
This commit is contained in:
@ -615,6 +615,7 @@ OB_NOINLINE int ObMPQuery::process_with_tmp_context(ObSQLSessionInfo &session,
|
|||||||
force_sync_resp,
|
force_sync_resp,
|
||||||
async_resp_used,
|
async_resp_used,
|
||||||
need_disconnect);
|
need_disconnect);
|
||||||
|
ctx_.first_plan_hash_ = 0;
|
||||||
ctx_.first_outline_data_.reset();
|
ctx_.first_outline_data_.reset();
|
||||||
ctx_.clear();
|
ctx_.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1703,8 +1703,6 @@ int ObTransformJoinElimination::eliminate_semi_join_self_foreign_key(ObDMLStmt *
|
|||||||
if (OB_ISNULL(semi_info = semi_infos.at(i))) {
|
if (OB_ISNULL(semi_info = semi_infos.at(i))) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("get unexpected null", K(ret), K(semi_info));
|
LOG_WARN("get unexpected null", K(ret), K(semi_info));
|
||||||
} else if (OB_FAIL(preprocess_generate_right_table(*stmt, *semi_info))) {
|
|
||||||
LOG_WARN("failed to preprocess generate right table", K(ret));
|
|
||||||
} else if (OB_FAIL(eliminate_semi_join_self_key(stmt,
|
} else if (OB_FAIL(eliminate_semi_join_self_key(stmt,
|
||||||
semi_info,
|
semi_info,
|
||||||
candi_conds,
|
candi_conds,
|
||||||
@ -1734,23 +1732,6 @@ int ObTransformJoinElimination::eliminate_semi_join_self_foreign_key(ObDMLStmt *
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// flatten joined table in right table
|
|
||||||
int ObTransformJoinElimination::preprocess_generate_right_table(ObDMLStmt &stmt,
|
|
||||||
SemiInfo &semi_info)
|
|
||||||
{
|
|
||||||
int ret = OB_SUCCESS;
|
|
||||||
TableItem *right_table = NULL;
|
|
||||||
if (OB_ISNULL(right_table = stmt.get_table_item_by_id(semi_info.right_table_id_))) {
|
|
||||||
ret = OB_ERR_UNEXPECTED;
|
|
||||||
LOG_WARN("get unexpected null", K(right_table), K(ret));
|
|
||||||
} else if (!right_table->is_generated_table()) {
|
|
||||||
/* do nothing */
|
|
||||||
} else if (OB_FAIL(ObTransformUtils::flatten_joined_table(right_table->ref_query_))) {
|
|
||||||
LOG_WARN("failed to faltten joined table", K(ret));
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ObTransformJoinElimination::eliminate_semi_join_self_key(ObDMLStmt *stmt,
|
int ObTransformJoinElimination::eliminate_semi_join_self_key(ObDMLStmt *stmt,
|
||||||
SemiInfo *semi_info,
|
SemiInfo *semi_info,
|
||||||
ObIArray<ObRawExpr*> &conds,
|
ObIArray<ObRawExpr*> &conds,
|
||||||
|
|||||||
@ -431,8 +431,6 @@ private:
|
|||||||
|
|
||||||
int left_join_can_be_eliminated(ObDMLStmt *stmt, TableItem *table, bool &can_be_eliminated);
|
int left_join_can_be_eliminated(ObDMLStmt *stmt, TableItem *table, bool &can_be_eliminated);
|
||||||
|
|
||||||
int preprocess_generate_right_table(ObDMLStmt &stmt, SemiInfo &semi_info);
|
|
||||||
|
|
||||||
int eliminate_semi_join_self_key(ObDMLStmt *stmt,
|
int eliminate_semi_join_self_key(ObDMLStmt *stmt,
|
||||||
SemiInfo *semi_info,
|
SemiInfo *semi_info,
|
||||||
ObIArray<ObRawExpr*> &conds,
|
ObIArray<ObRawExpr*> &conds,
|
||||||
|
|||||||
@ -1565,7 +1565,8 @@ int ObTransformPredicateMoveAround::pushdown_into_set_stmt(ObSelectStmt *stmt,
|
|||||||
LOG_WARN("assign preds failed", K(ret));
|
LOG_WARN("assign preds failed", K(ret));
|
||||||
} else if (OB_FAIL(append(pushdown_preds, invalid_pushdown_preds))) {
|
} else if (OB_FAIL(append(pushdown_preds, invalid_pushdown_preds))) {
|
||||||
LOG_WARN("failed to append no push down preds", K(ret));
|
LOG_WARN("failed to append no push down preds", K(ret));
|
||||||
} else if (pushdown_preds.count() != pushdown_preds_cnt
|
} else if ((pushdown_preds.count() != pushdown_preds_cnt
|
||||||
|
|| (stmt->is_set_stmt() && ObOptimizerUtil::find_item(transed_stmts_, stmt)))
|
||||||
&& OB_FAIL(add_var_to_array_no_dup(transed_stmts_, static_cast<ObDMLStmt*>(parent_stmt)))) {
|
&& OB_FAIL(add_var_to_array_no_dup(transed_stmts_, static_cast<ObDMLStmt*>(parent_stmt)))) {
|
||||||
LOG_WARN("append transed stmt failed", K(ret));
|
LOG_WARN("append transed stmt failed", K(ret));
|
||||||
} else {/*do nothing*/}
|
} else {/*do nothing*/}
|
||||||
|
|||||||
Reference in New Issue
Block a user