fix(types): preserve nested nullability in any binding - #244
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #244 +/- ##
==========================================
+ Coverage 68.84% 69.08% +0.23%
==========================================
Files 47 47
Lines 10862 10896 +34
==========================================
+ Hits 7478 7527 +49
+ Misses 3030 3015 -15
Partials 354 354 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
I opened #291 to cover a complementary return-substitution gap. #244 correctly preserves/enforces nested nullability during matching, but #291 normalizes a nullable |
Function matching for constrained
anyparameters was ignoring nullability too broadly. Under the clarified Substrait semantics, MIRROR and DECLARED_OUTPUT strip only the outermost argument nullability before binding; nested nullability inside compound types still participates in structural matching.This keeps cases like
list<i32>andlist<i32?>from binding to the samelist<any1>parameter while still allowing outer nullable wrappers to match as intended. The added tests mirror the examples from substrait-io/substrait#943.Note: This PR was developed with AI assistance. All changes have been reviewed, and I take full responsibility for this contribution.