Skip to content

Conversation

@kadinrabo
Copy link

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 UserDefined extension types from Arrow's extension_types.yaml:

  • UInt8/16/32/64 → u8, u16, u32, u64
  • LargeUtf8/LargeBinary/LargeList → large_string, large_binary, large_list
  • Decimal256, Duration, Date64, Time32, Time64, FixedSizeList

Plans now include extension_uris referencing 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.

@github-actions github-actions bot added the substrait Changes to the substrait crate label Jan 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

substrait Changes to the substrait crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use Arrow Extension Types Instead of Type Variation Hacks

1 participant