ulysses-you commented on code in PR #58339:
URL: https://github.com/apache/spark/pull/58339#discussion_r3930476206


##########
sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/GroupPartitionsExec.scala:
##########
@@ -78,6 +78,18 @@ case class GroupPartitionsExec(
         // data types match the reduced partition keys for the 
identity-vs-transform and
         // single-side-transform reducers; for the both-sides-reduce shape no 
single transform
         // describes the keys (see `KeyedShuffleSpec.reducersBothWays`).
+        //
+        // A marked claim pins undeclared rows to hash(key) % numPartitions 
(see
+        // `KeyedPartitioning.mayContainUnknownPartitionKeys`). Only an 
identity grouping keeps
+        // that relationship: any other grouping -- a reorder, a coalesce, a 
resize, or the
+        // collapse a reduction applies -- moves those rows. Clearing only the 
marker would
+        // misreport the undeclared rows that remain, so give up the keyed 
partitioning at the
+        // physical output count (one per group, padding included) that a 
parent's
+        // `PartitioningCollection` requires for uniformity. 
`identityGrouping` is a lazy val, so
+        // repeated `outputPartitioning` calls scan it at most once.
+        if (PartitioningCollection.keyedMarkerOf(p).contains(true) && 
!identityGrouping) {

Review Comment:
   Keeping the give-up in `GroupPartitionsExec` per the round-6 discussion with 
@peter-toth: the node deliberately under-reports, the comment states a plan 
containing it does not pass `ValidateRequirements`, and the give-up can only 
cost AQE optimizations on such a stage, never results. Declining the pairing in 
`checkKeyGroupCompatible` sends the marked side back to the ordinary shuffle 
path and changes the exchange contract the new tests pin; if the 
under-reporting turns out to cost in practice, that gate is a follow-up. cc 
@cloud-fan 



-- 
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