【Calcite 系列】深入理解 Calcite 的 AggregateFilterTransposeRuleAggregateFilterTransposeRule 会把 Aggregate(Filter(input)) 改写成 Filter(Aggregate(input)),也就是把聚合下推到过滤之前。听起来这不像常规的“提早过滤”优化,但这条规则的目的本来就不是减少输入行数,而是让计划形态更适合物化视图匹配和某些高代价谓词场景。本文结合源码实现,分析它何时可以直接转置,何时必须拆成上下两层聚合,以及它为什么明确拒绝 distinct 和不可 rollup 的聚合函数。