Skip to content

fix(core): validate writer batch schema#70

Open
QuakeWang wants to merge 2 commits into
apache:mainfrom
QuakeWang:mosaic-schema-guard
Open

fix(core): validate writer batch schema#70
QuakeWang wants to merge 2 commits into
apache:mainfrom
QuakeWang:mosaic-schema-guard

Conversation

@QuakeWang

Copy link
Copy Markdown
Member

MosaicWriter builds batch_col_map from the initial Arrow schema, but write_batch previously only checked column count and non-nullable null counts. A later batch with the same number of same-typed columns but reordered field names could be accepted and written through the stale column map, silently storing values under the wrong column names.

This patch validates each incoming batch against the writer schema before using batch_col_map: field name, logical type, and nullability must match. It also adds a regression test for the same-typed reordered-column case.

QuakeWang added 2 commits July 6, 2026 21:25
Reject record batches whose field names, types, or nullability do not match the writer schema before using the cached column map. This prevents same-typed reordered Arrow batches from silently writing values under the wrong column names.

Signed-off-by: QuakeWang <wangfuzheng0814@foxmail.com>
Do not reject an incoming batch solely because its field metadata is nullable while the writer schema is non-nullable. Keep the actual non-null contract enforced by the existing null-count check so PyArrow batches with nullable field metadata can still write when they contain no nulls.

Signed-off-by: QuakeWang <wangfuzheng0814@foxmail.com>
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