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]
