emecii opened a new pull request, #51276:
URL: https://github.com/apache/arrow/pull/51276

   ### Rationale for this change
   
   GH-36472 requests the same native Ruby conversion support for run-end 
encoded arrays as other arrays. Currently `RunEndEncodedArray#values` resolves 
to a GObject child property, while chunked values and record conversion raise 
`NotImplemented`.
   
   ### What changes are included in this PR?
   
   - Map logical positions to physical runs with Arrow's run-end utility, then 
convert the physical value through the existing native converters, including 
null and nested values.
   - Add REE dispatch to array values, bulk/streaming record conversion, and 
the existing nested-array visitors.
   - Remove the shadowing GObject `values` getter so `Array#values` is 
inherited. The physical child remains available through the existing 
`values_raw` method; `logical_values` is unchanged.
   
   ### Are these changes tested?
   
   Built the C++/GLib libraries from main at `68243c4ba` and compiled the 
changed native Ruby extension on macOS arm64 with Ruby 4.0.6.
   
   - New regression matrix: **43 tests, 339 assertions**, covering all three 
run-end widths, a logical offset above 32 bits, sliced physical children, 
slices within runs, null runs, empty arrays/chunks, nested values and REE 
children, and both Table/RecordBatch bulk and streaming paths. Against the 
unchanged extension, these tests produce 6 failures and 34 `NotImplemented` 
errors.
   - Full **red-arrow** suite: **2,710 tests, 3,014 assertions**, zero 
failures/errors; two ORC omissions.
   - GLib suite in the locally built core configuration: **2,238 tests, 2,299 
assertions**, zero failures/errors; 243 optional-component/platform omissions. 
A local preload excludes installed Arrow 25 optional typelibs from the Arrow 26 
process. Both native GLib C examples pass.
   - Repository-configured RuboCop 1.71.0, Ruby syntax, `git diff --check`, and 
the repository RAT license audit pass.
   
   ### Are there any user-facing changes?
   
   REE arrays now support native Ruby values and raw-record conversion.
   
   **This PR includes breaking changes to public APIs.** 
`RunEndEncodedArray#values` returns a Ruby array of logical values instead of 
the GObject physical-child property. Callers needing that child should use the 
already available `values_raw` method.
   
   ### AI assistance
   
   OpenAI Codex was used to generate the implementation and regression tests 
and to run the validation described above.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to