code: func (mr MutRow) SetDatum(colIdx int, d types.Datum) {
  	col := mr.c.columns[colIdx]
  	if d.IsNull() {
  		col.nullBitmap[0] = 0
  		return
  	}
  	switch d.Kind() {
  	case types.KindInt64, types.KindUint64, types.KindFloat64:
  		binary.LittleEndian.PutUint64(mr.c.columns[colIdx].data, d.GetUint64())
  	case types.KindFloat32:
  		binary.LittleEndian.PutUint32(mr.c.columns[colIdx].data, math.Float32bits(d.GetFloat32()))
  	case types.KindString, types.KindBytes, types.KindBinaryLiteral:
  		setMutRowBytes(col, d.GetBytes())
  	case types.KindMysqlTime:
  		writeTime(col.data, d.GetMysqlTime())
  	case types.KindMysqlDuration:
  		*(*int64)(unsafe.Pointer(&col.data[0])) = int64(d.GetMysqlDuration().Duration)
  	case types.KindMysqlDecimal:
  		*(*types.MyDecimal)(unsafe.Pointer(&col.data[0])) = *d.GetMysqlDecimal()
  	case types.KindMysqlJSON:
  		setMutRowJSON(col, d.GetMysqlJSON())
  	case types.KindMysqlEnum:
  		e := d.GetMysqlEnum()
  		setMutRowNameValue(col, e.Name, e.Value)
  	case types.KindMysqlSet:
  		s := d.GetMysqlSet()
  		setMutRowNameValue(col, s.Name, s.Value)
  	default:
  		mr.c.columns[colIdx] = makeMutRowColumn(d.GetValue())
  	}
  	col.nullBitmap[0] = 1
  }
docs: // SetDatum sets the MutRow with colIdx and datum.