docs(rfc): DataFusion / Arrow upgrade, phased behind upstream (RFC 0021, drafted) - #337
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThis PR adds a new RFC document (docs/rfcs/0021-datafusion-arrow-upgrade.md) describing a two-phase DataFusion/Arrow/Parquet/object_store upgrade plan, and adds a corresponding link entry in docs/SUMMARY.md. ChangesRFC 0021 documentation
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related issues
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Adds RFC 0021 (drafted) documenting a phased plan to upgrade the workspace’s DataFusion/Arrow stack behind what upstream has shipped, with Phase 1 focusing on unifying Arrow versions (via DF 54 / arrow+parquet 58.3) and Phase 2 gated on upstream releases (object_store ≥0.14 + parquet 59).
Changes:
- Add drafted RFC 0021 describing the phased DataFusion/Arrow upgrade plan and acceptance scenarios.
- Register RFC 0021 in the docs table of contents (mdBook SUMMARY).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| docs/SUMMARY.md | Adds RFC 0021 to the RFC index. |
| docs/rfcs/0021-datafusion-arrow-upgrade.md | Introduces the drafted RFC describing the phased DataFusion/Arrow upgrade plan, invariants, and acceptance criteria. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…1, drafted) The #314 epic's RFC. Two phases, each following what upstream has shipped: - Phase 1 (now): DataFusion 53.1 → 54.0 unifies the workspace on one arrow (58.3; ourios-parquet moves off 55.2), removing the RFC 0017 dual decoder + view-types workaround (#276). MSRV 1.85 → 1.88 (DataFusion 54's floor). - Phase 2 (upstream-gated, expected ~DataFusion 55): object_store ≥ 0.14 (#310, renovate hold #313) + parquet 59 (drops thrift → #295); quick-xml deny-ignores removal iff object_store pins quick-xml ≥ 0.41. The boundary is upstream reality, not preference: DataFusion 54 pins object_store ^0.13.2 and parquet ^58.3 (thrift ^0.17 still present), so the epic's single coordinated bump is not constructible from released crates. Phase 1 deliberately isolates the riskiest part — arrow 55 → 58 on the on-disk-format pillar — with §3.3/§3.5 pinned as invariants (no schema bytes change; a committed pre-upgrade Parquet fixture makes "old files still read" a permanent regression test) and B1/B2 re-measured. §5 has 9 scenarios (.1–.6 phase 1; .7–.9 upstream-gated phase 2). Alternatives (single DF-55 bump, object_store fork, parquet-59-first) rejected in §4. Verified: mdbook build renders; SUMMARY.md entry added. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19c216e to
fa479f8
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
Maintainer ruling on Copilot's review finding: the RFC ladder places §5 acceptance-criteria authorship at the `specified` stage, so a document carrying a full §5/§6 carries `specified`, not `drafted` (matching the RFC 0020 precedent, which merged at `specified`). Status flipped; no content change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What
RFC 0021 (drafted) — the #314 epic's RFC: the coordinated DataFusion /
Arrow upgrade, phased behind what upstream has actually shipped.
the same arrow the querier already pulls — so
ourios-parquetmoves offarrow 55 and the workspace unifies on one arrow, deleting the RFC 0017
dual decoder +
schema_force_view_typesworkaround (RFC 0017 row path: revisit arrow-58 decoder duplication + view-types workaround (feature-flag the alternative?) #276). MSRV 1.85 → 1.88(DF 54's floor).
renovate hold chore(renovate): hold object_store at 0.13.x until DataFusion upgrades #313) + parquet 59, which drops
thriftentirely (deps: remediate thrift advisory (GHSA-2f9f-gq7v-9h6m) via arrow/parquet/DataFusion upgrade #295).quick-xml deny-ignores removal iff the object_store release pins
quick-xml ≥ 0.41.
Why phased (§2.4 lock table): no released DataFusion accepts
object_store 0.14 or parquet 59 — DF 54.0.0 pins
object_store ^0.13.2andparquet ^58.3.0(thrift ^0.17 still present). The epic's single coordinatedbump is not constructible today; what is constructible (arrow unification)
is the riskiest slice — the on-disk-format pillar — and doing it in isolation
means the property/corpus/reconstruction suites validate exactly one change.
Invariants pinned (§3.1)
written bytes is pinned back or explicitly RFC'd — never absorbed silently.
A committed pre-upgrade Parquet fixture makes "old files still read" a
permanent regression test (RFC0021.2).
localstack suites in phase 2 (RFC0021.7).
baseline on opt-in) — RFC0021.5.
§5
Nine scenarios:
.1–.6phase 1,.7–.9phase 2 (stubs land red onlywhen upstream opens the phase).
Process
Opened at
draftedper the RFC ladder; on your sign-off I flip tospecifiedand merge (RFC sign-off is the merge gate), then take phase 1 toredwith the §5 stubs.🤖 Generated with Claude Code
Summary by CodeRabbit