code: func (e *Explain) prepareOperatorInfo(p PhysicalPlan, taskType string, indent string, isLastChild bool) {
  	operatorInfo := p.ExplainInfo()
  	count := string(strconv.AppendFloat([]byte{}, p.statsInfo().RowCount, 'f', 2, 64))
  	explainID := p.ExplainID().String()
  	row := []string{e.prettyIdentifier(explainID, indent, isLastChild), count, taskType, operatorInfo}
  	if e.Analyze {
  		runtimeStatsColl := e.ctx.GetSessionVars().StmtCtx.RuntimeStatsColl
  		// There maybe some mock information for cop task to let runtimeStatsColl.Exists(p.ExplainID()) is true.
  		// So check copTaskExecDetail first and print the real cop task information if it's not empty.
  		if runtimeStatsColl.ExistsCopStats(explainID) {
  			row = append(row, runtimeStatsColl.GetCopStats(explainID).String())
  		} else if runtimeStatsColl.ExistsRootStats(explainID) {
  			row = append(row, runtimeStatsColl.GetRootStats(explainID).String())
  		} else {
  			row = append(row, "time:0ns, loops:0, rows:0")
  		}
  	}
  	e.Rows = append(e.Rows, row)
  }
docs: // prepareOperatorInfo generates the following information for every plan:
  // operator id, task type, operator info, and the estemated row count.