Skip to content

compat-gen: Epoch B adapter (v0.45.0–v0.52.0)#6893

Draft
joseph-isaacs wants to merge 6 commits intovortex-data:developfrom
joseph-isaacs:ji/compat-gen-epoch-b
Draft

compat-gen: Epoch B adapter (v0.45.0–v0.52.0)#6893
joseph-isaacs wants to merge 6 commits intovortex-data:developfrom
joseph-isaacs:ji/compat-gen-epoch-b

Conversation

@joseph-isaacs
Copy link
Contributor

Summary

  • Builds on the compat-gen crate from the Epoch A PR
  • Swaps adapter.rs to target the v0.45.0–v0.52.0 write API
  • At this epoch the write API is identical to Epoch A but with stricter stream bounds (Send + 'static)
  • Also has write_blocking() available for sync usage

This PR is part of a 3-PR series showing how adapter.rs changes per API epoch. See RFC 23.

Adapter diff from Epoch A

Only comments change — the actual write call is identical since the API surface didn't change for the write path between 0.36.0 and 0.52.0.

Test plan

  • cargo build --manifest-path vortex-test/compat-gen/Cargo.toml compiles at a v0.45.0–v0.52.0 checkout

🤖 Generated with Claude Code

joseph-isaacs and others added 6 commits March 11, 2026 15:26
Standalone crate for generating backward-compat fixture .vortex files.
Uses Epoch A adapter targeting the v0.36.0 write API:
  - VortexWriteOptions::default() (no session)
  - .write(sink, stream).await returns the sink

Fixtures: primitives, strings, booleans, nullable, struct_nested,
chunked, tpch_lineitem, tpch_orders.

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Write API is the same as Epoch A but with stricter stream bounds
(Send + 'static). Also has write_blocking() for sync usage.

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Session-based API: VortexSession::default() + session.write_options().
write() now returns WriteSummary and takes &mut sink.

This is the adapter that compiles against the current codebase.

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds: compat-test binary design, ClickBench fixture, per-encoding
stubs, validation strategy (ChunkedArray + assert_arrays_eq!),
reqwest-based HTTPS fetching, CI workflow specs, and complete
code size / shared-vs-branch-specific breakdown.

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…workflows

- adapter.rs: add read_file() for Epoch C (session-based open_buffer + async scan)
- fixtures/clickbench.rs: download pinned ClickBench hits_0.parquet, take 1k rows
- fixtures/encodings.rs: todo!() stubs for Dict, RunEnd, Constant, Sparse, ALP, BitPacked, FSST
- test_main.rs: CLI with --fixtures-url (HTTPS) or --fixtures-dir (local)
- validate.rs: fetch manifest + fixtures, compare via ChunkedArray + assert_arrays_eq!
- compat-gen-upload.yml: generate + upload to S3 on tag push, updates versions.json
- compat-test-weekly.yml: weekly validation of all versions against HEAD reader
- Cargo.toml: add reqwest, parquet deps + compat-test binary target

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
VortexWriteOptions::default() (same write as A), sync in-memory open,
into_array_iter() (sync scan).

Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@joseph-isaacs joseph-isaacs marked this pull request as draft March 11, 2026 16:18
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