fix: fix the core when has returning expr induced by dml processing order refactor
This commit is contained in:
@ -137,17 +137,20 @@ OB_INLINE int ObTableDeleteOp::inner_open_with_das()
|
||||
int ObTableDeleteOp::check_need_exec_single_row()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < MY_SPEC.del_ctdefs_.count() && !execute_single_row_; ++i) {
|
||||
const ObTableDeleteSpec::DelCtDefArray &ctdefs = MY_SPEC.del_ctdefs_.at(i);
|
||||
const ObDelCtDef &del_ctdef = *ctdefs.at(0);
|
||||
if (has_before_row_trigger(del_ctdef) || has_after_row_trigger(del_ctdef)) {
|
||||
execute_single_row_ = true;
|
||||
}
|
||||
const ObForeignKeyArgArray &fk_args = del_ctdef.fk_args_;
|
||||
for (int j = 0; OB_SUCC(ret) && j < fk_args.count() && !execute_single_row_; j++) {
|
||||
if (fk_args.at(j).is_self_ref_ && fk_args.at(j).ref_action_ == ACTION_CASCADE) {
|
||||
ret = ObTableModifyOp::check_need_exec_single_row();
|
||||
if (OB_SUCC(ret) && !execute_single_row_) {
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < MY_SPEC.del_ctdefs_.count() && !execute_single_row_; ++i) {
|
||||
const ObTableDeleteSpec::DelCtDefArray &ctdefs = MY_SPEC.del_ctdefs_.at(i);
|
||||
const ObDelCtDef &del_ctdef = *ctdefs.at(0);
|
||||
if (has_before_row_trigger(del_ctdef) || has_after_row_trigger(del_ctdef)) {
|
||||
execute_single_row_ = true;
|
||||
}
|
||||
const ObForeignKeyArgArray &fk_args = del_ctdef.fk_args_;
|
||||
for (int j = 0; OB_SUCC(ret) && j < fk_args.count() && !execute_single_row_; j++) {
|
||||
if (fk_args.at(j).is_self_ref_ && fk_args.at(j).ref_action_ == ACTION_CASCADE) {
|
||||
execute_single_row_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user