一句话:提出有状态 fold 计算的最优谓词下推合成框架,自动生成正确且最优的过滤分解。
谓词下推是数据流水线的关键优化,但过滤提前到通用语言 UDF 前需要语义推理。本文为有状态、基于 fold 的计算建立谓词下推语义基础,把下推视为两个处理不同输入子集程序之间的对应,并用互模拟不变式刻画内部状态关系。基于此,作者提出可靠且相对完备的验证框架,以及自动构造最优下推分解的合成算法,通过寻找最强可允许前置过滤器和最弱残余后置过滤器实现最优性。工具 Pusharoo 在 150 个真实 pandas 与 Spark 流水线上评估,表达力优于已有工作,合成中位时间 1.6 秒,端到端平均加速 2.4 倍,最高达两个数量级。
Predicate pushdown is a long-standing performance optimization that filters data as early as possible in a computational workflow. In modern data pipelines, this transformation is especially important because much of the computation occurs inside user-defined functions (UDFs) written in general-purpose languages such as Python and Scala. These UDFs capture rich domain logic and complex aggregations and are among the most expensive operations in a pipeline. Moving filters ahead of such UDFs can yield substantial performance gains, but doing so requires semantic reasoning. This paper introduces a general semantic foundation for predicate pushdown over stateful fold-based computations. We view pushdown as a correspondence between two programs that process different subsets of input data, with correctness witnessed by a bisimulation invariant relating their internal states. Building on this foundation, we develop a sound and relatively complete framework for verification, alongside a synthesis algorithm that automatically constructs optimal pushdown decompositions by finding the strongest admissible pre-filters and weakest residual post-filters. We implement this approach in a tool called Pusharoo and evaluate it on 150 real-world pandas and Spark data-processing pipelines. Our evaluation shows that Pusharoo is significantly more expressive than prior work, producing optimal pushdown transformations with a median synthesis time of 1.6 seconds per benchmark. Furthermore, our experiments demonstrate that the discovered pushdown optimizations speed up end-to-end execution by an average of 2.4× and up to two orders of magnitude.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{abs-2604-13351,
title = {Optimal Predicate Pushdown Synthesis},
author = {Robert Zhang and Eric Hayden Campbell and Dixin Tang and Işıl Dillig},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {PLDI},
year = {2026},
doi = {10.1145/3808312}
}