fix for update error after transform
This commit is contained in:
parent
36bd526106
commit
0aceccaec0
@ -1407,7 +1407,10 @@ int ObTransformAggrSubquery::check_stmt_valid(ObDMLStmt &stmt, bool &is_valid)
|
||||
int ret = OB_SUCCESS;
|
||||
is_valid = true;
|
||||
bool can_set_unique = false;
|
||||
if (stmt.is_set_stmt() || stmt.is_hierarchical_query() || !stmt.is_sel_del_upd()) {
|
||||
if (stmt.is_set_stmt()
|
||||
|| stmt.is_hierarchical_query()
|
||||
|| stmt.has_for_update()
|
||||
|| !stmt.is_sel_del_upd()) {
|
||||
is_valid = false;
|
||||
} else if (OB_FAIL(StmtUniqueKeyProvider::check_can_set_stmt_unique(&stmt, can_set_unique))) {
|
||||
LOG_WARN("failed to check can set stmt unque", K(ret));
|
||||
|
@ -623,7 +623,8 @@ int ObTransformSemiToInner::check_basic_validity(ObDMLStmt *root_stmt,
|
||||
trans_param.need_add_gby_ = (left_exprs.count() != 0);
|
||||
ctx.is_multi_join_cond_ = is_multi_join_cond;
|
||||
need_check_cost = true;
|
||||
} else {
|
||||
} else if (!stmt.has_for_update()) {
|
||||
// If there is FOR UPDATE, can not use TO_INNER_GBY
|
||||
// TO_INNER_GBY : for following cases:
|
||||
// 1. there are more than one compare-join-conditions
|
||||
// 2. non-standard correlated condition(s) exist
|
||||
|
@ -428,6 +428,9 @@ int ObTransformerImpl::choose_rewrite_rules(ObDMLStmt *stmt, uint64_t &need_type
|
||||
ObTransformRule::add_trans_type(disable_list, WIN_MAGIC);
|
||||
ObTransformRule::add_trans_type(disable_list, NL_FULL_OUTER_JOIN);
|
||||
ObTransformRule::add_trans_type(disable_list, OR_EXPANSION);
|
||||
ObTransformRule::add_trans_type(disable_list, GROUPBY_PUSHDOWN);
|
||||
ObTransformRule::add_trans_type(disable_list, GROUPBY_PULLUP);
|
||||
ObTransformRule::add_trans_type(disable_list, TEMP_TABLE_OPTIMIZATION);
|
||||
}
|
||||
if (func.update_global_index_) {
|
||||
ObTransformRule::add_trans_type(disable_list, OR_EXPANSION);
|
||||
|
Loading…
x
Reference in New Issue
Block a user