Skip to content

nested struct types in record batch API - #108

Merged
yuvimittal merged 17 commits into
arxlang:mainfrom
yogendra-17:feat/arrow-struct-types
Aug 21, 2026
Merged

nested struct types in record batch API#108
yuvimittal merged 17 commits into
arxlang:mainfrom
yogendra-17:feat/arrow-struct-types

Conversation

@yogendra-17

Copy link
Copy Markdown
Contributor

Pull Request description

Adds struct columns to the record batch API (nested type; the list half landed in #101).
A struct column holds N named fixed-width primitive fields. Child types are now stored as a ColDesc{type, name, children} tree instead of a flat per-column vector, so list-of-struct / struct-of-list can reuse the same representation later.
Stacked on feat/arrow-list-types (#101); retarget to main once that merges.

How to test these changes

  • Build the native runtime, then pytest packages/irx/tests/test_record_batch.py -q.

Pull Request checklists

This PR is a:

  • bug-fix
  • new feature
  • maintenance

About this PR:

  • it includes tests.
  • the tests are executed on CI.
  • the tests generate log file(s) (path).
  • pre-commit hooks were executed locally.
  • this PR requires a project documentation update.

Author's checklist:

  • I have reviewed the changes and it contains no misspelling.
  • The code is well commented, especially in the parts that contain more
    complexity.
  • New and old tests passed locally.

Additional information

Depends on #101

Reviewer's checklist

Copy and paste this template for your review's note:

## Reviewer's Checklist

- [ ] I managed to reproduce the problem locally from the `main` branch
- [ ] I managed to test the new changes locally
- [ ] I confirm that the issues mentioned were fixed/resolved .

@yogendra-17
yogendra-17 marked this pull request as ready for review August 14, 2026 11:15
@yuvimittal

yuvimittal commented Aug 19, 2026

Copy link
Copy Markdown
Member

@yogendra-17 , thanks for working on this
can you rebase this PR
One correctness gap: get_struct only checks is_null for the whole struct slot, then reads each field's fixed-width buffer directly (child[row]) without consulting the field's own null bitmap. IRx-built data can't hit this, but a PyArrow-imported struct like {"x": 10, "y": None} would return a garbage/zero y instead of None. Worth either honoring the child validity bitmap or documenting that field-level nulls are unsupported in this cut .

but we can work on this later on

@yuvimittal

Copy link
Copy Markdown
Member

i tried rebasing your branch, but there are some merge conflicts so can you please look into this

@yogendra-17

Copy link
Copy Markdown
Contributor Author

@yuvimittal I've resolve the merge conflicts,can you please help me review and merge?

@yuvimittal
yuvimittal merged commit 0ff576e into arxlang:main Aug 21, 2026
76 checks passed
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.

2 participants