Fix das task retry issue introduce by transfer.
This commit is contained in:
		@ -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<ObDASScanOp*>(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)) {
 | 
			
		||||
 | 
			
		||||
@ -391,6 +391,14 @@ public:
 | 
			
		||||
                                      const common::ObTabletID &scan_tablet_id,
 | 
			
		||||
                                      const common::ObArrayWrap<share::schema::ObColDesc> &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.
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user