Skip to content

Commit 1118a20

Browse files
gatesnclaude
andauthored
Decimal casting (#8562)
Signed-off-by: "Nicholas Gates" <nick@nickgates.com> Signed-off-by: Nicholas Gates <nick@nickgates.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 4668b6e commit 1118a20

6 files changed

Lines changed: 572 additions & 67 deletions

File tree

vortex-array/src/arrays/constant/compute/cast.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,15 @@ mod tests {
2525
use rstest::rstest;
2626

2727
use crate::IntoArray;
28+
use crate::LEGACY_SESSION;
29+
use crate::VortexSessionExecute;
2830
use crate::arrays::ConstantArray;
31+
use crate::builtins::ArrayBuiltins;
2932
use crate::compute::conformance::cast::test_cast_conformance;
33+
use crate::dtype::DType;
34+
use crate::dtype::DecimalDType;
35+
use crate::dtype::Nullability;
36+
use crate::scalar::DecimalValue;
3037
use crate::scalar::Scalar;
3138

3239
#[rstest]
@@ -39,4 +46,22 @@ mod tests {
3946
fn test_cast_constant_conformance(#[case] array: crate::ArrayRef) {
4047
test_cast_conformance(&array);
4148
}
49+
50+
#[test]
51+
fn test_cast_constant_i64_to_decimal() {
52+
let target_dtype = DType::Decimal(DecimalDType::new(21, 2), Nullability::NonNullable);
53+
let casted = ConstantArray::new(Scalar::from(42i64), 5)
54+
.into_array()
55+
.cast(target_dtype.clone())
56+
.unwrap();
57+
58+
assert_eq!(casted.dtype(), &target_dtype);
59+
let scalar = casted
60+
.execute_scalar(0, &mut LEGACY_SESSION.create_execution_ctx())
61+
.unwrap();
62+
assert_eq!(
63+
scalar.as_decimal().decimal_value(),
64+
Some(DecimalValue::I128(4200))
65+
);
66+
}
4267
}

0 commit comments

Comments
 (0)