code: func (e *AnalyzeIndexExec) fetchAnalyzeResult(ranges []*ranger.Range, isNullRange bool) error {
  	var builder distsql.RequestBuilder
  	kvReq, err := builder.SetIndexRanges(e.ctx.GetSessionVars().StmtCtx, e.physicalTableID, e.idxInfo.ID, ranges).
  		SetAnalyzeRequest(e.analyzePB).
  		SetKeepOrder(true).
  		SetConcurrency(e.concurrency).
  		Build()
  	if err != nil {
  		return err
  	}
  	ctx := context.TODO()
  	result, err := distsql.Analyze(ctx, e.ctx.GetClient(), kvReq, e.ctx.GetSessionVars().KVVars, e.ctx.GetSessionVars().InRestrictedSQL)
  	if err != nil {
  		return err
  	}
  	result.Fetch(ctx)
  	if isNullRange {
  		e.countNullRes = result
  	} else {
  		e.result = result
  	}
  	return nil
  }
docs: // fetchAnalyzeResult builds and dispatches the `kv.Request` from given ranges, and stores the `SelectResult`
  // in corresponding fields based on the input `isNullRange` argument, which indicates if the range is the
  // special null range for single-column index to get the null count.