refactor(substrait): use Arrow extension types instead of type variation hacks #19945
+719
−148
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.
Which issue does this PR close?
Rationale for this change
See issue for details.
What changes are included in this PR?
Replaces type variation hacks with
UserDefinedextension types from Arrow's extension_types.yaml:u8,u16,u32,u64large_string,large_binary,large_listPlans now include
extension_urisreferencing the Arrow URI. Old variation constants are deprecated but the consumer maintains backwards compatibility.Are these changes tested?
Yes. All 179 existing substrait tests pass, including round-trip tests for all affected types.
Are there any user-facing changes?
No breaking changes. Generated Substrait plans use the new extension type format, but the consumer accepts both old and new formats.