[to #51089750]after stmt trigger not throw mutating table error

This commit is contained in:
seuwebber
2023-07-25 03:18:41 +00:00
committed by ob-robot
parent 7bc06252c5
commit c47fbf7825
4 changed files with 18 additions and 0 deletions

View File

@ -205,6 +205,9 @@ OB_INLINE int ObTableDeleteOp::close_table_for_each()
if (!del_rtdefs_.at(i).empty()) {
const ObDelCtDef &primary_del_ctdef = *MY_SPEC.del_ctdefs_.at(i).at(0);
ObDelRtDef &primary_del_rtdef = del_rtdefs_.at(i).at(0);
if (OB_NOT_NULL(primary_del_rtdef.das_rtdef_.table_loc_)) {
primary_del_rtdef.das_rtdef_.table_loc_->is_writing_ = false;
}
if (OB_FAIL(ObDMLService::process_after_stmt_trigger(primary_del_ctdef,
primary_del_rtdef,
dml_rtctx_,

View File

@ -435,6 +435,9 @@ OB_INLINE int ObTableInsertOp::close_table_for_each()
if (!ins_rtdefs_.at(i).empty()) {
const ObInsCtDef &primary_ins_ctdef = *MY_SPEC.ins_ctdefs_.at(i).at(0);
ObInsRtDef &primary_ins_rtdef = ins_rtdefs_.at(i).at(0);
if (OB_NOT_NULL(primary_ins_rtdef.das_rtdef_.table_loc_)) {
primary_ins_rtdef.das_rtdef_.table_loc_->is_writing_ = false;
}
if (OB_FAIL(ObDMLService::process_after_stmt_trigger(primary_ins_ctdef,
primary_ins_rtdef,
dml_rtctx_,

View File

@ -278,6 +278,9 @@ OB_INLINE int ObTableMergeOp::close_table_for_each()
if (OB_NOT_NULL(merge_ctdef.ins_ctdef_)) {
const ObInsCtDef &ins_ctdef = *merge_ctdef.ins_ctdef_;
ObInsRtDef &ins_rtdef = merge_rtdef.ins_rtdef_;
if (OB_NOT_NULL(ins_rtdef.das_rtdef_.table_loc_)) {
ins_rtdef.das_rtdef_.table_loc_->is_writing_ = false;
}
if (OB_FAIL(ObDMLService::process_after_stmt_trigger(ins_ctdef, ins_rtdef, dml_rtctx_,
ObDmlEventType::DE_INSERTING))) {
LOG_WARN("process after stmt trigger failed", K(ret));
@ -286,6 +289,9 @@ OB_INLINE int ObTableMergeOp::close_table_for_each()
if (OB_SUCC(ret) && OB_NOT_NULL(merge_ctdef.upd_ctdef_)) {
const ObUpdCtDef &upd_ctdef = *merge_ctdef.upd_ctdef_;
ObUpdRtDef &upd_rtdef = merge_rtdef.upd_rtdef_;
if (OB_NOT_NULL(upd_rtdef.dupd_rtdef_.table_loc_)) {
upd_rtdef.dupd_rtdef_.table_loc_->is_writing_ = false;
}
if (OB_FAIL(ObDMLService::process_after_stmt_trigger(upd_ctdef, upd_rtdef, dml_rtctx_,
ObDmlEventType::DE_UPDATING))) {
LOG_WARN("process after stmt trigger failed", K(ret));
@ -294,6 +300,9 @@ OB_INLINE int ObTableMergeOp::close_table_for_each()
if (OB_SUCC(ret) && OB_NOT_NULL(merge_ctdef.del_ctdef_)) {
const ObDelCtDef &del_ctdef = *merge_ctdef.del_ctdef_;
ObDelRtDef &del_rtdef = merge_rtdef.del_rtdef_;
if (OB_NOT_NULL(del_rtdef.das_rtdef_.table_loc_)) {
del_rtdef.das_rtdef_.table_loc_->is_writing_ = false;
}
if (OB_FAIL(ObDMLService::process_after_stmt_trigger(del_ctdef, del_rtdef, dml_rtctx_,
ObDmlEventType::DE_DELETING))) {
LOG_WARN("process after stmt trigger failed", K(ret));

View File

@ -255,6 +255,9 @@ OB_INLINE int ObTableUpdateOp::close_table_for_each()
if (!upd_rtdefs_.at(i).empty()) {
const ObUpdCtDef &primary_upd_ctdef = *MY_SPEC.upd_ctdefs_.at(i).at(0);
ObUpdRtDef &primary_upd_rtdef = upd_rtdefs_.at(i).at(0);
if (OB_NOT_NULL(primary_upd_rtdef.dupd_rtdef_.table_loc_)) {
primary_upd_rtdef.dupd_rtdef_.table_loc_->is_writing_ = false;
}
if (OB_FAIL(ObDMLService::process_after_stmt_trigger(primary_upd_ctdef,
primary_upd_rtdef,
dml_rtctx_,