code: func (mr MutRow) SetValue(colIdx int, val interface{}) {
  	col := mr.c.columns[colIdx]
  	if val == nil {
  		col.nullBitmap[0] = 0
  		return
  	}
  	switch x := val.(type) {
  	case int:
  		binary.LittleEndian.PutUint64(col.data, uint64(x))
  	case int64:
  		binary.LittleEndian.PutUint64(col.data, uint64(x))
  	case uint64:
  		binary.LittleEndian.PutUint64(col.data, x)
  	case float64:
  		binary.LittleEndian.PutUint64(col.data, math.Float64bits(x))
  	case float32:
  		binary.LittleEndian.PutUint32(col.data, math.Float32bits(x))
  	case string:
  		setMutRowBytes(col, hack.Slice(x))
  	case []byte:
  		setMutRowBytes(col, x)
  	case types.BinaryLiteral:
  		setMutRowBytes(col, x)
  	case types.Duration:
  		*(*int64)(unsafe.Pointer(&col.data[0])) = int64(x.Duration)
  	case *types.MyDecimal:
  		*(*types.MyDecimal)(unsafe.Pointer(&col.data[0])) = *x
  	case types.Time:
  		writeTime(col.data, x)
  	case types.Enum:
  		setMutRowNameValue(col, x.Name, x.Value)
  	case types.Set:
  		setMutRowNameValue(col, x.Name, x.Value)
  	case json.BinaryJSON:
  		setMutRowJSON(col, x)
  	}
  	col.nullBitmap[0] = 1
  }
docs: // SetValue sets the MutRow with colIdx and value.