Skip to content

fix(layout): stop dict writer looping on an oversized value - #10400

Merged
robert3005 merged 2 commits into
developfrom
claude/issue-10397-20261008-2131
Oct 12, 2026
Merged

robert3005 merged 2 commits into
developfrom
claude/issue-10397-20261008-2131

Conversation

@vortex-claude

@vortex-claude vortex-claude Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #10397

A value larger than the dictionary byte budget did not fit an empty dictionary. The encoder then encoded 0 rows, and DictStreamState::encode retried the same chunk forever.

The bytes and primitive dictionary builders now always admit the first entry, so each encode step makes progress.

github-actions Bot and others added 2 commits October 8, 2026 21:35
A value too large to fit an empty dictionary made BytesDictBuilder and
PrimitiveDictBuilder encode 0 rows, so DictStreamState::encode retried the
same chunk forever while pushing empty chunks into its result vector.

Guarantee forward progress by always admitting the first entry into an empty
dictionary, even when it exceeds the byte or length budget. An oversized value
is then written as its own single-entry dictionary and encoding terminates.

Fixes #10397

Signed-off-by: Claude <noreply@anthropic.com>
Co-authored-by: Robert Kruszewski <robert3005@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Robert Kruszewski <github@robertk.io>
@robert3005 robert3005 changed the title DictStreamState::encode loops forever on a value that does not fit an empty dictionary fix(layout): stop dict writer looping on an oversized value Oct 8, 2026
@robert3005 robert3005 added the changelog/fix A bug fix label Oct 9, 2026
@robert3005
robert3005 merged commit 61b8041 into develop Oct 12, 2026
124 of 125 checks passed
@robert3005
robert3005 deleted the claude/issue-10397-20261008-2131 branch October 12, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/fix A bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DictStreamState::encode loops forever on a value that does not fit an empty dictionary

2 participants