Skip to content

chore(deps): arrow 55 -> 59, hotdata 0.16.0 - #286

Merged
anoop-narang merged 1 commit into
mainfrom
chore/arrow-59
Sep 3, 2026
Merged

anoop-narang merged 1 commit into
mainfrom
chore/arrow-59

Conversation

@anoop-narang

Copy link
Copy Markdown
Contributor

Summary

Two dependency lines. No source changes.

hotdata = { version = "0.16.0", features = ["arrow"] }
arrow   = { version = "59", default-features = false, features = ["ipc", "chrono-tz", "json"] }

Results are fetched as Arrow IPC and rendered here with arrow-json, the same encoder the service uses for its inline JSON. Until now the two ran different arrow majors, so they agreed because they were observed to and not because anything pinned them together. A change in how a nested value is written across an arrow major would have shown up as wrong output rather than a build failure. This puts both on the same major.

Why both lines have to move together

Arrow types cross the SDK's public API — ArrowResult hands back RecordBatch and SchemaRef — so the SDK's arrow major is effectively this crate's. Bumping either alone builds two arrow trees and fails:

note: two different versions of crate `arrow_schema` are being used; two types
      coming from two different versions of the same crate are different types
      even if they look the same

hotdata 0.16.0 is the SDK release that moved to arrow 59.

Verification

  • cargo build — clean against the published crate; Cargo.lock resolves hotdata 0.16.0 from crates.io and arrow-array 59.3.0
  • cargo fmt --check, cargo clippy --all-targets -- -D warnings — clean
  • full suite passes, including the eight renderer tests added recently

Rendering was also checked against a live service, comparing the inline answer to the same result fetched from storage, on both arrow majors:

case          SERVER inline                client arrow55               client arrow59
list          [1, 2, 3]                    same                         same
nested list   [[1, 2], [3]]                same                         same
struct        {"a": 1, "b": "x"}           same                         same
map           {"a": 1, "b": 2}             same                         same
decimal       123.456                      same                         same
binary        "616263"                     same                         same
duration      "PT1S"                       same                         same
date32        "2026-01-01"                 same                         same
ts UTC        "2026-01-01T12:00:00Z"       same                         same
ts Kolkata    "2026-01-01T12:00:00+05:30"  same                         same
NaN           null                         same                         same
null          null                         same                         same

12/12 agree across all three

So arrow 55 and 59 render identically today — nothing was broken by the gap. The value here is that the two are now pinned to the same major rather than agreeing by coincidence, since nothing in CI compares client rendering against the service.

Note

No behaviour change is expected, so there is no CHANGELOG entry beyond what the dependency bump implies. Happy to add one if you would rather it be visible in the release notes.

Results are fetched as Arrow and rendered here with arrow-json, the
same encoder the service uses. Until now the two ran different arrow
majors, so they agreed because they were observed to and not because
anything pinned them — and a drift in how a nested value is written
would have surfaced as wrong output rather than a build failure. This
puts both on the same major.

Both moves are required together: arrow types cross the SDK's public
API, so its arrow major is effectively ours. Bumping one alone builds
two arrow trees and fails to compile, since types from two majors are
distinct even where they look identical.

No source changes. Only the two dependency lines move.
@anoop-narang
anoop-narang requested a review from a team as a code owner September 3, 2026 14:22
@anoop-narang
anoop-narang requested review from eddietejeda and removed request for a team September 3, 2026 14:22

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dependency bump only. Both lines have to move together, and the diff moves both. Cargo.lock resolves hotdata 0.16.0 and the full arrow 59.3.0 tree consistently, with no second arrow major left in the graph.

The ipc, chrono-tz and json features still exist on arrow 59, and the arrow-json items this crate imports (EncoderOptions, NullableEncoder, make_encoder in src/commands/query.rs:5) are still public there.

Note on CI: only CI / changelog reported success at review time. CI / fmt and CI / test were still pending, so this approval does not confirm the suite passed.

nit: stale comment in src/commands/query.rs:126-129 (not blocking).

Inline comments cannot anchor there, because the file is outside the diff. The ENCODER_OPTIONS doc comment says the service runs a later arrow than the SDK, and that aligning the two needs an SDK release first. This PR is that release. A reader hitting those lines after merge will look for a version gap that no longer exists. Rewrite the caveat to state that the CLI and the SDK now share arrow 59, and keep the one real asymmetry (this path builds a Value, the service writes bytes straight to the response), which encode_cell already documents.

super nit: the arrow 55 vs 59 rendering table in the description is the strongest evidence in this PR, and nothing in the repo records it (not blocking). A CHANGELOG entry, or a comment above the arrow dependency in Cargo.toml:43, would keep that result findable after the PR scrolls out of view.

@codecov

codecov Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@anoop-narang
anoop-narang merged commit 813e96f into main Sep 3, 2026
14 checks passed
@anoop-narang
anoop-narang deleted the chore/arrow-59 branch September 3, 2026 14:28
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