-
Notifications
You must be signed in to change notification settings - Fork 66
Feature/schema evolution #687
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
64 commits
Select commit
Hold shift + click to select a range
3510939
feature: enable auto.evolve parameter
guilleov 060a44d
fix: avoid query connection leak
guilleov fe8c6be
chore: move value to static field to make it more clear
guilleov 90807e7
fix: create custom type inference exception
guilleov c95ecb0
fix: dont wrap connectTypeToClickHouseType in try-catch since method …
guilleov 197cef2
fix: move Nullable wrapping into connectTypeToClickHouseType and alwa…
guilleov e62cba1
chore: remove sub batching since is not needed
guilleov 48767ff
feat: add auto evolve DDL refresh retries configuration to ClickHouse…
guilleov 8d4d49f
fix: update DDL refresh logic to throw RetriableException on timeout
guilleov e926ae1
fix: schema requirement for auto evolve
guilleov b458daf
refactor: optimize alterTableAddColumns method to use a single SQL st…
guilleov 3c755bb
feat: add auto evolve struct to JSON configuration option to ClickHou…
guilleov 670eec5
feat: enhance schema handling by adding union type detection and mapp…
guilleov 80f0c4e
feat: add tests for auto-evolving schemas in ClickHouseSinkTask
guilleov f67be35
feat: improve auto-evolve functionality to handle mixed schema versions
guilleov e0d340a
fix: remove unused import
guilleov 5b763ee
feature: enable auto.evolve parameter
guilleov 2209243
feat: add auto evolve struct to JSON configuration option to ClickHou…
guilleov b1e616a
feat: enhance schema handling by adding union type detection and mapp…
guilleov cd28e13
feat: add tests for auto-evolving schemas in ClickHouseSinkTask
guilleov aec1935
fix: remove unused import
guilleov f8eacc5
fix: escape column names in ClickHouseWriter to prevent SQL injection…
guilleov bd9ba2d
refactor: remove duplicated code from merge
guilleov f2235e2
feat: add default expressions for Array and Map types
guilleov 16c0a44
fix: handle Variant columns in mixed-schema batches with auto.evolve
guilleov 95e330a
feat: optimize field extraction in auto-evolve by using IdentityHashM…
guilleov bcc0874
feat: forward clickhouse settings to ALTER TABLE DDL in auto-evolve
guilleov 598171b
fix: handle Variant and union null serialization in RowBinary writer
guilleov d3a72a5
refactor: simplify auto-evolve to check only last record schema
guilleov 8646bc0
fix: replace createTable with runQuery to match main convention
guilleov 564b1f9
feature: enable auto.evolve parameter
guilleov f113745
fix: avoid query connection leak
guilleov 352b9f9
chore: move value to static field to make it more clear
guilleov 419bac5
fix: create custom type inference exception
guilleov 00d652d
fix: dont wrap connectTypeToClickHouseType in try-catch since method …
guilleov bff79be
fix: move Nullable wrapping into connectTypeToClickHouseType and alwa…
guilleov f45995c
chore: remove sub batching since is not needed
guilleov b41ee1d
feat: add auto evolve DDL refresh retries configuration to ClickHouse…
guilleov b206080
fix: update DDL refresh logic to throw RetriableException on timeout
guilleov 3923c86
fix: schema requirement for auto evolve
guilleov dde2b57
refactor: optimize alterTableAddColumns method to use a single SQL st…
guilleov 5cf2e1c
feat: add auto evolve struct to JSON configuration option to ClickHou…
guilleov 9ef332f
feat: enhance schema handling by adding union type detection and mapp…
guilleov 79c91af
feat: add tests for auto-evolving schemas in ClickHouseSinkTask
guilleov 3424a5e
feat: improve auto-evolve functionality to handle mixed schema versions
guilleov bfb5dad
fix: remove unused import
guilleov c3ee1a0
feature: enable auto.evolve parameter
guilleov 2b45928
feat: add auto evolve struct to JSON configuration option to ClickHou…
guilleov 4d67ee9
feat: enhance schema handling by adding union type detection and mapp…
guilleov 7b8d2d7
feat: add tests for auto-evolving schemas in ClickHouseSinkTask
guilleov 4050a55
fix: remove unused import
guilleov c07421e
fix: escape column names in ClickHouseWriter to prevent SQL injection…
guilleov 34843af
refactor: remove duplicated code from merge
guilleov a24127b
feat: add default expressions for Array and Map types
guilleov 4538336
fix: handle Variant columns in mixed-schema batches with auto.evolve
guilleov 401fe21
feat: optimize field extraction in auto-evolve by using IdentityHashM…
guilleov 4571045
feat: forward clickhouse settings to ALTER TABLE DDL in auto-evolve
guilleov a0a71e1
fix: handle Variant and union null serialization in RowBinary writer
guilleov c44c2f4
refactor: simplify auto-evolve to check only last record schema
guilleov 65a802d
fix: replace createTable with runQuery to match main convention
guilleov 471e2b6
Merge branch 'main' into feature/schema-evolution
guilleov 183c1e0
Merge branch 'feature/schema-evolution' of github.com:guilleov/clickh…
guilleov 2e56b81
fix: use existing test helpers for auto-evolve tests
guilleov 714435f
test: align auto-evolve tests with last-record-only contract
guilleov File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment says auto-evolve "only adds Nullable columns", but
Column.connectTypeToClickHouseTypeexplicitly returns non-nullable types for Array/Map/Variant (ClickHouse restriction). After evolving such a column, older records that don't contain the new field will hit thefieldExists=falsepath indoWriteCol(...)and currently throw (and for Map may NPE if the field exists-but-null). Consider adding DEFAULT expressions for newly added Array/Map/Variant columns (so RowBinaryWithDefaults can emit defaults), or explicitly treat missing fields for these types as empty values / Variant NULL discriminator during serialization.