You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by we...@apache.org on 2026/05/21 09:07:17 UTC

(spark) branch master updated: [SPARK-56868][SQL][FOLLOW-UP] Clarify scaladoc for V2 runtime filter helpers

This is an automated email from the ASF dual-hosted git repository.

cloud-fan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new 992290bc09c3 [SPARK-56868][SQL][FOLLOW-UP] Clarify scaladoc for V2 runtime filter helpers
992290bc09c3 is described below

commit 992290bc09c3b0974e3ab804bf515ba37d5065ef
Author: Szehon Ho <sz...@gmail.com>
AuthorDate: Thu May 21 17:07:00 2026 +0800

    [SPARK-56868][SQL][FOLLOW-UP] Clarify scaladoc for V2 runtime filter helpers
    
    ### What changes were proposed in this pull request?
    
    Clarify scaladoc for `PushDownUtils.pushRuntimeFilters` and `PushDownUtils.replanWithRuntimeFilters` introduced in [SPARK-56868](https://issues.apache.org/jira/browse/SPARK-56868) ([#55887](https://github.com/apache/spark/pull/55887)):
    
    - Document the mutating-scan constraint on `pushRuntimeFilters`, where `SupportsRuntimeV2Filtering.filter` is invoked.
    - Replace the mixed Note/Precondition text on `replanWithRuntimeFilters` with a concise Notes bullet list.
    
    ### Why are the changes needed?
    
    The original helper scaladoc mixed concerns (execute-time requirements, caller caching, and preconditions) and referenced `pushRuntimeFilters` from the wrong method. This follow-up makes the documentation easier to read without changing behavior.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Documentation-only change; existing tests cover runtime filter behavior.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    No.
    
    Closes #55958 from szehon-ho/spark-56868-cleanup.
    
    Authored-by: Szehon Ho <sz...@gmail.com>
    Signed-off-by: Wenchen Fan <we...@databricks.com>
---
 .../sql/execution/datasources/v2/PushDownUtils.scala     | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/PushDownUtils.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/PushDownUtils.scala
index dc6de6f29af9..c54cc98014d7 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/PushDownUtils.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/PushDownUtils.scala
@@ -141,6 +141,9 @@ object PushDownUtils extends Logging {
    * the first pass are used to derive PartitionPredicates in the second pass, avoiding duplicate
    * pushdown.
    *
+   * Note: Do not call multiple times for the same `scan` instance;
+   * [[SupportsRuntimeV2Filtering.filter]] is mutating.
+   *
    * @return true if any filters were pushed to the data source
    */
   def pushRuntimeFilters(
@@ -195,14 +198,11 @@ object PushDownUtils extends Logging {
    * preserved the original partitioning and pads with `None` to preserve key alignment with the
    * pre-filter partition set.
    *
-   * Must be called at execute time: runtime filters carry [[DynamicPruningExpression]] and
-   * scalar-subquery references whose values are only resolved after their broadcast/subquery
-   * side completes. The mutating [[pushRuntimeFilters]] call must run at most once per scan
-   * instance; callers are responsible for caching the result.
-   *
-   * Precondition: when `outputPartitioning` is a [[KeyedPartitioning]], every element of
-   * `originalPartitions` (and every partition re-planned by the data source) must implement
-   * [[HasPartitionKey]].
+   * Notes:
+   *  - Do not call multiple times for the same `scan` instance;
+   *    [[SupportsRuntimeV2Filtering.filter]] is mutating.
+   *  - When `outputPartitioning` is a [[KeyedPartitioning]], every split from
+   *    `planInputPartitions()` used on this path must implement [[HasPartitionKey]].
    *
    * @param scan                the V2 scan to push filters into
    * @param runtimeFilters      runtime filters to translate and push


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org