code: func (h *Handle) UpdateErrorRate(is infoschema.InfoSchema) {
  	h.mu.Lock()
  	tbls := make([]*statistics.Table, 0, len(h.mu.rateMap))
  	for id, item := range h.mu.rateMap {
  		table, ok := h.getTableByPhysicalID(is, id)
  		if !ok {
  			continue
  		}
  		tbl := h.GetPartitionStats(table.Meta(), id).Copy()
  		if item.PkErrorRate != nil && tbl.Columns[item.PkID] != nil {
  			col := *tbl.Columns[item.PkID]
  			col.ErrorRate.Merge(item.PkErrorRate)
  			tbl.Columns[item.PkID] = &col
  		}
  		for key, val := range item.IdxErrorRate {
  			if tbl.Indices[key] == nil {
  				continue
  			}
  			idx := *tbl.Indices[key]
  			idx.ErrorRate.Merge(val)
  			tbl.Indices[key] = &idx
  		}
  		tbls = append(tbls, tbl)
  		delete(h.mu.rateMap, id)
  	}
  	h.mu.Unlock()
  	h.UpdateTableStats(tbls, nil)
  }
docs: // UpdateErrorRate updates the error rate of columns from h.rateMap to cache.