code: func (e *Explain) prepareSchema() error {
  	switch strings.ToLower(e.Format) {
  	case ast.ExplainFormatROW:
  		retFields := []string{"id", "count", "task", "operator info"}
  		if e.Analyze {
  			retFields = append(retFields, "execution info")
  		}
  		schema := expression.NewSchema(make([]*expression.Column, 0, len(retFields))...)
  		for _, fieldName := range retFields {
  			schema.Append(buildColumn("", fieldName, mysql.TypeString, mysql.MaxBlobWidth))
  		}
  		e.SetSchema(schema)
  	case ast.ExplainFormatDOT:
  		retFields := []string{"dot contents"}
  		schema := expression.NewSchema(make([]*expression.Column, 0, len(retFields))...)
  		for _, fieldName := range retFields {
  			schema.Append(buildColumn("", fieldName, mysql.TypeString, mysql.MaxBlobWidth))
  		}
  		e.SetSchema(schema)
  	default:
  		return errors.Errorf("explain format '%s' is not supported now", e.Format)
  	}
  	return nil
  }
docs: // prepareSchema prepares explain's result schema.