Skip to content

chore(deps)!: bump substrait packages to 0.98.0#232

Open
nielspardon wants to merge 2 commits into
substrait-io:mainfrom
nielspardon:chore/bump-substrait-0.98.0
Open

chore(deps)!: bump substrait packages to 0.98.0#232
nielspardon wants to merge 2 commits into
substrait-io:mainfrom
nielspardon:chore/bump-substrait-0.98.0

Conversation

@nielspardon

Copy link
Copy Markdown
Member

Summary

Updates the substrait packages to 0.98.0 (closes #226) and adapts the plan printer to the proto fields removed in this release.

  • Bump substrait-protobuf, substrait-extensions, and substrait-antlr from 0.97.00.98.0; regenerate uv.lock and pixi.lock.
  • Fix two latent crashes in substrait.utils.display: the printer read the deprecated FetchRel.offset/count and ReadRel.VirtualTable.values fields, which raise AttributeError under 0.98.0. It now renders offset_expr/count_expr and the VirtualTable expressions.
  • Remove the now-dead _stream_struct_literal helper (its only caller was the removed VirtualTable.values path).
  • Add tests/test_display.py covering the virtual-table and fetch display paths, which had no test coverage.

Breaking changes in substrait 0.98.0

The 0.98.0 protos remove several long-deprecated fields:

Removed field Replacement Status in this repo
HashJoinRel/MergeJoinRel left_keys/right_keys keys Builders already use keys — no change
FetchRel offset/count offset_expr/count_expr Builders already emit *_expr; display fixed here
ReadRel.VirtualTable.values expressions Builder already uses expressions; display fixed here
IntervalDayToSecond.microseconds subseconds (+ precision) Builder already uses subseconds/precision — no change

No public builder/consumer API change is required. The only user-visible behaviour change is the plan printer's virtual-table output, which now reuses the shared expression renderer (literal: <value>) instead of the removed field-typed struct renderer.

Stacking

This is stacked on top of #230 (bump to 0.97.0), which is not yet merged. Until #230 lands, this PR's diff will also include the 0.97.0 changes; once #230 merges to main, only the 0.97.0 → 0.98.0 delta will remain. Merge #230 first.

Testing

  • pixi run -e dev pytest → 546 passed, 30 skipped
  • pixi run lint → clean
  • pixi run format --check → clean

🤖 Generated with AI

Bump substrait-protobuf, substrait-extensions, and substrait-antlr from
0.96.0 to 0.97.0, and regenerate uv.lock and pixi.lock.

BREAKING CHANGE: An unset IntervalDay.precision no longer defaults to
microseconds (6). Producers must set precision explicitly and consumers
should reject an unset precision; picosecond precision (12) is now allowed.
The interval_day() builder already requires an explicit precision, so no
API change is needed.
Bump substrait-protobuf, substrait-extensions, and substrait-antlr from
0.97.0 to 0.98.0, regenerate uv.lock and pixi.lock, and adapt the plan
printer to the removed proto fields.

The plan printer read the deprecated FetchRel.offset/count and
ReadRel.VirtualTable.values fields, which raise AttributeError under 0.98.0.
Render offset_expr/count_expr and the VirtualTable expressions instead, and
add display tests covering both paths (previously untested).

BREAKING CHANGE: substrait 0.98.0 removes the deprecated left_keys/right_keys
from HashJoinRel/MergeJoinRel, offset/count from FetchRel, VirtualTable.values,
and IntervalDayToSecond.microseconds. The builders already emit the
replacement fields (keys, offset_expr/count_expr, expressions, subseconds),
so no builder API change is needed.
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.

Update to Substrait v0.98.0

1 participant