Skip to content

0.22.1: a table's extent and count from its manifests, not a scan of every file - #171

Merged
nhobin219 merged 2 commits into
release/0.22.xfrom
fix/0.22.1
Oct 20, 2026
Merged

nhobin219 merged 2 commits into
release/0.22.xfrom
fix/0.22.1

Conversation

@nhobin219

Copy link
Copy Markdown
Owner

Hotfix on the 0.22 line (readers pinned <0.23). Table.open ran min/max/count(*) over iceberg_scan, reading every data file's footer on every snapshot open; on a log with ~550 small files one open took 20+ s, minutes on a loaded box. The three numbers now come from the manifests' per-file statistics (one read of the manifest list plus one per manifest), falling back to the scan when a file lacks bounds or a delete file exists.

New test: the manifest numbers equal the scan's, and open never issues the extent scan (fails when the fallback is forced). tests/test_published, snapshot_readers, restore, retention, catchup_pages: 58 passed. The same fix for main is on fix/table-open-extent-from-manifests.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PXyESUWnfYF3jXPHp7pz12

nhobin219 and others added 2 commits October 20, 2026 02:12
…scan of every file

`Table.open` learned its extent with `min/max/count(*)` over `iceberg_scan`,
which reads every data file's footer: a request per file, on every open, of
every reader. A log that publishes every few minutes grows thousands of small
files, and one open took 20+ s from a laptop and minutes on a loaded box.

The three numbers are in the manifests' per-file statistics (record counts and
the offset column's bounds), one read of the manifest list and one per
manifest. Falls back to the scan when the statistics cannot answer exactly: a
file without bounds on the offset column, or a delete file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PXyESUWnfYF3jXPHp7pz12
A fix on the 0.22 line: Table.open reads a table's extent and count from its
manifests instead of scanning every data file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PXyESUWnfYF3jXPHp7pz12
@nhobin219
nhobin219 merged commit e781c79 into release/0.22.x Oct 20, 2026
6 checks passed
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