pan3793 opened a new pull request, #58756: URL: https://github.com/apache/spark/pull/58756
### What changes were proposed in this pull request? `RowLevelOperationTable`, the internal wrapper a row-level rewrite (UPDATE, MERGE, group-based DELETE) reads the table through, delegates `name`, `columns`, `capabilities` and `constraints` to the wrapped table but not `partitioning()`, so it returned the default empty array. It now delegates `partitioning()` too. The in-memory row-level test table now pushes V2 predicates iteratively, so a group-based scan can receive a second-pass `PartitionPredicate`. ### Why are the changes needed? Since SPARK-55596 (4.2.0), `PushDownUtils.getPartitionPredicateSchema` reads the partitioning of the read relation's table to derive `PartitionPredicate`s, in the group-based row-level scan planning rule, in `V2ScanRelationPushDown` for delta-based scans, and in runtime filter pushdown. For every row-level operation the table it sees is the wrapper, so the schema was always empty and no `PartitionPredicate` was ever derived for a row-level scan. The wrapper has been this way since SPARK-38085 (3.3.0), but nothing read its partitioning before 4.2.0, so the gap was invisible until then. ### Does this PR introduce _any_ user-facing change? No. A connector that opts into iterative pushdown now receives `PartitionPredicate`s for UPDATE, MERGE and DELETE scans the same way it does for SELECT. ### How was this patch tested? New test: a group-based UPDATE on a partitioned table pushes a second-pass `PartitionPredicate` to the row-level scan, and only the matching partitions are replaced. It fails without the fix. ### Was this patch authored or co-authored using generative AI tooling? Generated-by: Claude Fable 5.1 -- 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]
