Skip to content

GH-184: Expand Arrow C Data Interface import coverage#604

Draft
samtalki wants to merge 2 commits into
apache:mainfrom
samtalki:agent/cdata-import-breadth-v2
Draft

GH-184: Expand Arrow C Data Interface import coverage#604
samtalki wants to merge 2 commits into
apache:mainfrom
samtalki:agent/cdata-import-breadth-v2

Conversation

@samtalki

@samtalki samtalki commented Jul 6, 2026

Copy link
Copy Markdown

Refs #184

Depends on #603. Do not merge before #603.

Incremental review diff: samtalki/arrow-julia@agent/cdata-import-foundation...agent/cdata-import-breadth-v2

This expands C Data import coverage beyond the foundation PR:

  • boolean, utf8, large utf8, binary, large binary, list, large list, fixed size binary, fixed size list, temporal, timestamp, duration, interval, and decimal formats
  • nested struct columns as imported table columns
  • null_count == -1 handling for broader formats
  • offset, child length, malformed format, overflow, release, copy, collect, metadata, and GC rooting tests

Verification:

  • julia --project=. -e 'using Arrow, Test, Tables, DataAPI; include("test/cdata.jl")'
  • julia --project=. --check-bounds=yes -e 'using Arrow, Test, Tables, DataAPI; include("test/cdata.jl")'
  • julia --project=. -e 'using Pkg; Pkg.test()'
  • julia --project=. -e 'using Pkg; Pkg.test(; julia_args=["--check-bounds=yes"])'
  • git diff --check upstream/main...HEAD

AI assistance: Generated with OpenAI Codex and reviewed for licensing and unsafe code concerns.

Incremental size note: relative to predecessor #603, this PR is 2 files changed, +752/-5 diff lines, net +747. GitHub may show the larger unmerged stack diff until #603 lands.

samtalki and others added 2 commits July 6, 2026 19:51
Add ArrowSchema and ArrowArray ABI structs plus C Data import for null and primitive arrays. Root struct arrays are exposed as Tables.jl column tables with DataAPI metadata.

Add validation for pointer layout, child counts, buffers, offset arithmetic, metadata bounds, dictionary pointer consistency, release idempotency, and reads after release.

Keep aligned imported buffers rooted behind a shared owner, and mirror arrow-rs by copying misaligned fixed width buffers into aligned storage before typed access. The copy and collect methods materialize Julia owned arrays.

Adjust dictionary encoding offsets for non 1-based reference pools so categorical pools with missing values keep correct dictionary indices.

Co-authored-by: Robert Buessow <robert.buessow@relational.ai>
Co-authored-by: Olle Martensson <olle.martensson@gmail.com>
Generated-by: OpenAI Codex
Add import support for boolean, string, binary, list, fixed size, temporal, timestamp, duration, interval, and decimal C Data formats. Extend malformed input, offset, null count, release, copy, collect, metadata, and GC rooting coverage for the broader importer.

Co-authored-by: Robert Buessow <robert.buessow@relational.ai>

Co-authored-by: Olle Martensson <olle.martensson@gmail.com>

Generated-by: OpenAI Codex
@samtalki samtalki force-pushed the agent/cdata-import-breadth-v2 branch from 178406b to e306a2b Compare July 7, 2026 00:07
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