code: func (e *CheckIndexRangeExec) Open(ctx context.Context) error {
  	tCols := e.table.Cols()
  	for _, ic := range e.index.Columns {
  		col := tCols[ic.Offset]
  		e.cols = append(e.cols, col)
  	}
  
  	colTypeForHandle := e.schema.Columns[len(e.cols)].RetType
  	e.cols = append(e.cols, &model.ColumnInfo{
  		ID:        model.ExtraHandleID,
  		Name:      model.ExtraHandleName,
  		FieldType: *colTypeForHandle,
  	})
  
  	e.srcChunk = e.newFirstChunk()
  	dagPB, err := e.buildDAGPB()
  	if err != nil {
  		return err
  	}
  	sc := e.ctx.GetSessionVars().StmtCtx
  	var builder distsql.RequestBuilder
  	kvReq, err := builder.SetIndexRanges(sc, e.table.ID, e.index.ID, ranger.FullRange()).
  		SetDAGRequest(dagPB).
  		SetKeepOrder(true).
  		SetFromSessionVars(e.ctx.GetSessionVars()).
  		Build()
  	if err != nil {
  		return err
  	}
  
  	e.result, err = distsql.Select(ctx, e.ctx, kvReq, e.retFieldTypes, statistics.NewQueryFeedback(0, nil, 0, false))
  	if err != nil {
  		return err
  	}
  	e.result.Fetch(ctx)
  	return nil
  }
docs: // Open implements the Executor Open interface.