Core: Fix rewrite_position_delete_files failure with array/map columns #15079
+144
−1
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.
Summary
Fixes
rewrite_position_delete_filesfailing withValidationException: Invalid partition field parentwhen tables contain array or map columns.Root Cause
ExpressionUtil.identitySpec()attempted to create identity partition fields for all primitive fields in the schema, including those nested inside arrays and maps. Since commit 9fb80b7,PartitionSpec.checkCompatibility()validates that partition field parents must be struct types, causing the failure.Fix
identitySpec()now filters out fields that cannot be partition sources by checking that all ancestor types are structs, usingTypeUtil.indexParents()- the same approach used inPartitionSpec.checkCompatibility().Testing
Added test case that reproduces the issue with a table containing
ARRAY<STRUCT<...>>column.Fixes #15080