Skip to content

Add decimal broadcast dispatch and scale-aware print formatting - #184

Merged
pbower merged 1 commit into
feature/decimalfrom
MA-EPC86-DECIMAL-TSK380-BROADCAST
Aug 31, 2026
Merged

Add decimal broadcast dispatch and scale-aware print formatting#184
pbower merged 1 commit into
feature/decimalfrom
MA-EPC86-DECIMAL-TSK380-BROADCAST

Conversation

@pbower

@pbower pbower commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds Decimal32/64/128 arms to broadcast_length_1_array for repeating length-1 decimal arrays to target length, preserving precision/scale and null mask
  • Fixes Print trait value_to_string for decimal variants to use per-element scale-aware formatting instead of formatting the entire array
  • 11 new tests covering broadcast for all widths, null propagation, and table display integration

Test plan

  • cargo test --features "decimal,chunked,views" passes (786 tests)
  • cargo test without decimal passes (no regression)

Broadcast: add Decimal32/64/128 arms to broadcast_length_1_array so
a length-1 DecimalArray repeats to the target length, preserving
precision, scale, and null mask. Scalar::Decimal variants already
convert to single-element arrays (TSK377), so the end-to-end
scalar broadcast path now works through the existing
maybe_broadcast_scalar_array infrastructure.

Print: fix value_to_string to format individual decimal values at
the requested index using format_decimal_value, instead of formatting
the entire DecimalArray. Positive scale inserts a decimal point,
zero scale returns the raw integer, negative scale appends trailing
zeros, and null values display as "null".
@pbower pbower changed the title Add decimal broadcast dispatch and scale-aware print formatting (TSK380) Add decimal broadcast dispatch and scale-aware print formatting Aug 31, 2026
@pbower
pbower merged commit 5985c3d into feature/decimal Aug 31, 2026
17 checks passed
@pbower
pbower deleted the MA-EPC86-DECIMAL-TSK380-BROADCAST branch August 31, 2026 05:08
pbower added a commit that referenced this pull request Aug 31, 2026
* Add DecimalArray foundation and i128 trait impls (#181)

* Add Decimal32, Decimal64, Decimal128 variants to ArrowType (#180)

* Wire DecimalArray into NumericArray, Array, Scalar with From impls (#182)

* Wire DecimalArray into NumericArray, Array, and Scalar enums with From impls and tests (#182)

* Implement decimal conversion arms in NumericArray try_ accessors

* Add decimal FFI import/export with arrow-rs and Polars round-trips (#186)

* Add decimal FFI import/export with arrow-rs and Polars round-trips

* Integrate DecimalArray into Value, ArrayV, NumericArrayV, SuperArray, SuperArrayV, and Consolidate (#187)

* Add decimal broadcast dispatch and scale-aware print formatting (#184)

* Add decimal arithmetic kernels with checked overflow and auto-promotion + fix null mask drop on broadcasting (#185)

* Add decimal arithmetic kernels with checked overflow and auto-promotion
* Propagate null mask through broadcast for all array types

* Add DecimalArray type conversions and width conversion methods (#183)

* Add decimal support to pyo3 and minarrow-py Python bridges (#188)

* Add Decimal32 and Decimal64 round-trip tests for arrow-rs

* Add decimal support to pyo3 and minarrow-py Python bridges

* Make precision and scale report values for all numeric types
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant