Skip to content

perf: avoid formatting errors for missing physical columns - #79

Open
strawgate wants to merge 1 commit into
pydantic:friendlymatthew/pydantic-main-df55from
strawgate:codex/schema-lookup-fast-miss
Open

strawgate wants to merge 1 commit into
pydantic:friendlymatthew/pydantic-main-df55from
strawgate:codex/schema-lookup-fast-miss

Conversation

@strawgate

Copy link
Copy Markdown

Rationale for this change

Schema adaptation treats a missing physical column as an expected case, but Schema::index_of formats an error listing every field before the adapter discards it. This adds work when reading files with evolving schemas.

What changes are included in this PR?

Use the same name lookup through Fields::find, which returns None without constructing the error. Add a focused benchmark for present and missing columns in 16- and 128-field schemas.

Are these changes tested?

The 36 adapter unit tests, full-workspace Clippy with warnings denied, and the extended test suite pass. On an arm64 Mac, the missing-column benchmark improved from 558 to 266 ns (16 fields) and from 2.00 µs to 343 ns (128 fields). Present-column cases were also faster. These are isolated microbenchmarks, not an end-to-end query claim.

Are there any user-facing changes?

No. Missing nullable columns still become null; missing non-nullable columns still error. There is no public API change.

@codecov-commenter

Copy link
Copy Markdown

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

Thanks for integrating Codecov - We've got you covered ☂️

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.

2 participants