fix: add missing end_snapshot IS NULL filter in Postgres and MySQL providers#88
Merged
zfarrell merged 1 commit intoMar 18, 2026
Conversation
…t_table_structure() The PostgreSQL and MySQL metadata providers were missing 'AND end_snapshot IS NULL' in get_table_structure(), causing all historical column rows to be returned instead of only current ones. When a column's properties change (e.g. nullability), DuckLake closes the old row (end_snapshot = N) and creates a new one (end_snapshot = NULL). Without the filter, both rows are returned, creating duplicate column names in the Arrow schema, which DataFusion rejects with: Schema error: Schema contains duplicate qualified field name The DuckDB provider already has this filter via the shared SQL_GET_TABLE_COLUMNS constant. The SQLite provider has it in its inline SQL. Only PostgreSQL and MySQL were missing it.
Collaborator
|
Thanks @ChristianCasazza! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #87.
The Postgres and MySQL
get_table_structure()queries were missingAND end_snapshot IS NULL, returning expired column rows alongside current ones. This causes duplicate column names in the Arrow schema when a column's properties have changed over time.The DuckDB and SQLite providers already have this filter. Two lines changed, one in each file.