diff --git a/src/sql/engine/table/ob_table_scan_op.cpp b/src/sql/engine/table/ob_table_scan_op.cpp index 9998c64fb1..4792de4c46 100644 --- a/src/sql/engine/table/ob_table_scan_op.cpp +++ b/src/sql/engine/table/ob_table_scan_op.cpp @@ -657,7 +657,7 @@ OB_INLINE int ObTableScanOp::create_one_das_task(ObDASTabletLoc *tablet_loc) scan_op->set_scan_ctdef(&MY_CTDEF.scan_ctdef_); scan_op->set_scan_rtdef(&tsc_rtdef_.scan_rtdef_); scan_op->set_can_part_retry(nullptr == tsc_rtdef_.scan_rtdef_.sample_info_ - && ctx_.get_my_session()->is_user_session()); + && can_partition_retry()); tsc_rtdef_.scan_rtdef_.table_loc_->is_reading_ = true; if (!MY_SPEC.is_index_global_ && MY_CTDEF.lookup_ctdef_ != nullptr) { //is local index lookup, need to set the lookup ctdef to the das scan op @@ -3163,7 +3163,7 @@ int ObGlobalIndexLookupOpImpl::process_data_table_rowkey() das_scan_op = static_cast(tmp_op); das_scan_op->set_scan_ctdef(get_lookup_ctdef()); das_scan_op->set_scan_rtdef(lookup_rtdef); - das_scan_op->set_can_part_retry(table_scan_op_->get_exec_ctx().get_my_session()->is_user_session()); + das_scan_op->set_can_part_retry(table_scan_op_->can_partition_retry()); } } if (OB_SUCC(ret)) { diff --git a/src/sql/engine/table/ob_table_scan_op.h b/src/sql/engine/table/ob_table_scan_op.h index 85261da413..85cf8bef2d 100644 --- a/src/sql/engine/table/ob_table_scan_op.h +++ b/src/sql/engine/table/ob_table_scan_op.h @@ -391,6 +391,14 @@ public: const common::ObTabletID &scan_tablet_id, const common::ObArrayWrap &rowkey_descs, common::ObNewRange &new_range); + + OB_INLINE bool can_partition_retry() + { + return ( + ctx_.get_my_session()->is_user_session() && + ! ObStmt::is_dml_write_stmt(ctx_.get_physical_plan_ctx()->get_phy_plan()->get_stmt_type()) + ); + } protected: // Get GI task then update location_idx and $cur_access_tablet_ // NOTE: set $iter_end_ if no task found.