cloud-fan opened a new pull request, #56484:
URL: https://github.com/apache/spark/pull/56484

   ### What changes were proposed in this pull request?
   
   Followup to https://github.com/apache/spark/pull/55682.
   
   In `RewriteNearestByJoin`, when the `NEAREST BY` join type is `LEFT OUTER`, 
the synthesized `Join` widens the right-side columns to nullable. However, the 
synthesized `Aggregate` (and the optional `__ranking__` `Project`) built on top 
of that join still referenced the right-side columns via `right.output` and 
`rankingExpression` with their original (non-nullable) nullability. As a result 
the rewritten plan can declare a right-side column as non-nullable while its 
child -- the join -- produces it as nullable.
   
   This PR maps the right-side attributes to their widened (nullable) form for 
`LEFT OUTER` and rewrites both the `CreateStruct(right.*)` and the ranking 
expression to use that widened nullability, so the rewritten plan's schema is 
consistent with its child. For `INNER` joins the right side is not widened, so 
this is a no-op.
   
   ### Why are the changes needed?
   
   Without this fix the rewritten plan for a `LEFT OUTER NEAREST BY` declares 
right-side columns non-nullable while its join child produces them nullable -- 
an inconsistency that nullability/plan-integrity validation flags as a 
regression.
   
   ### Does this PR introduce any user-facing change?
   
   No.
   
   ### How was this patch tested?
   
   Existing `RewriteNearestByJoinSuite` (updated to mirror the widened 
nullability), plus the `DataFrameNearestByJoinSuite` LEFT OUTER cases.
   
   ### Was this patch authored or co-authored using generative AI tooling?
   
   No.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to