You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 62057df
Browse filesBrowse the repository at this point in the historyBrowse files
[adapters] Pin a datafusion fork that preserves INT96 field metadata
Coercing INT96 timestamps rebuilds every struct, list and map field with
`Field::new_*`, which start from empty metadata, so reading a file that holds
an INT96 column strips `PARQUET:field_id` from every container field in it.
A Delta table with column mapping pairs its columns to the read schema by that
id, so a struct column pairs with nothing and reads back as NULL, silently, on
exactly the Databricks tables that write INT96.
That happens inside datafusion's Parquet opener, before any adapter of ours is
constructed, so the snapshot scan cannot be fixed from this repo. Pin a fork
carrying the one-line fix until it is released upstream:
issue: apache/datafusion#24786
branch: https://github.com/ryzhyk/datafusion/tree/int96-preserve-field-metadata
repro: https://github.com/ryzhyk/coerce_int96_bug
Three manifests need the patch, because each resolves its own graph: the
platform workspace, the SQL compiler's `temp` crate, which the workspace
excludes, and the workspace the SQL compiler emits for a pipeline. The last is
the one that matters in production, since a pipeline is what links the Delta
connector; without it the fix would never reach a running pipeline.
Patching one datafusion crate pulls its siblings in from the fork, so all 32 in
the graph are patched, or the same crate resolves twice and the build fails on
mismatched types.
`delta_table_input_int96_column_mapping_snapshot_test` guards the pin: remove
the `[patch.crates-io]` section and the struct column comes back NULL.
0 commit comments