in arrow/scalar/scalar.go [174:214]
func (s *Boolean) CastTo(dt arrow.DataType) (Scalar, error) {
if !s.Valid {
return MakeNullScalar(dt), nil
}
if dt.ID() == arrow.STRING {
return NewStringScalar(strconv.FormatBool(s.Value)), nil
}
val := 0
if s.Value {
val = 1
}
switch dt.ID() {
case arrow.UINT8:
return NewUint8Scalar(uint8(val)), nil
case arrow.INT8:
return NewInt8Scalar(int8(val)), nil
case arrow.UINT16:
return NewUint16Scalar(uint16(val)), nil
case arrow.INT16:
return NewInt16Scalar(int16(val)), nil
case arrow.UINT32:
return NewUint32Scalar(uint32(val)), nil
case arrow.INT32:
return NewInt32Scalar(int32(val)), nil
case arrow.UINT64:
return NewUint64Scalar(uint64(val)), nil
case arrow.INT64:
return NewInt64Scalar(int64(val)), nil
case arrow.FLOAT16:
return NewFloat16Scalar(float16.New(float32(val))), nil
case arrow.FLOAT32:
return NewFloat32Scalar(float32(val)), nil
case arrow.FLOAT64:
return NewFloat64Scalar(float64(val)), nil
default:
return nil, xerrors.Errorf("invalid scalar cast from type bool to type %s", dt)
}
}