From df663f971493f9e909819be7609c922841de2ae0 Mon Sep 17 00:00:00 2001
From: Yongting You <2010youy01@gmail.com>
Date: Mon, 22 Dec 2025 17:15:44 +0800
Subject: [PATCH 01/11] cp
---
.../physical-expr-common/src/physical_expr.rs | 61 +++++++++++++++++++
datafusion/pruning/src/lib.rs | 1 +
datafusion/pruning/src/pruner.rs | 19 ++++++
3 files changed, 81 insertions(+)
create mode 100644 datafusion/pruning/src/pruner.rs
diff --git a/datafusion/physical-expr-common/src/physical_expr.rs b/datafusion/physical-expr-common/src/physical_expr.rs
index 2358a21940912..f55f52dc970bb 100644
--- a/datafusion/physical-expr-common/src/physical_expr.rs
+++ b/datafusion/physical-expr-common/src/physical_expr.rs
@@ -430,6 +430,67 @@ pub trait PhysicalExpr: Any + Send + Sync + Display + Debug + DynEq + DynHash {
fn is_volatile_node(&self) -> bool {
false
}
+
+ // ---------------
+ // Pruning related
+ // ---------------
+ // None means propagation not implemented/supported for this node
+ fn propagate_range_stats(
+ child_range_stats: &[RangeStats],
+ ) -> Result