fn collect_conjunction_bounds(
expr: &PartitionExpr,
) -> Option<CollectedConjunction>Expand description
Collects per-column bounds and passthrough atoms from a pure AND tree.
Scope and intent:
- This helper is shared by
is_empty_and_conjunctionandsimplify_and_boundsso both paths interpret conjunction atoms the same way. - It only handles conjunction-only expressions. If any
ORis present, it returnsNoneand lets callers keep their conservative fallback behavior.
Behavior:
- Tightest lower/upper bounds are recorded per column.
=contributes both a lower and an upper bound at the same value.!=and non-range atoms are preserved inpassthroughfor callers that need to rebuild the conjunction.has_conflictis set when atomic constraints already contradict each other (for examplea = 1 AND a <> 1).
Notes:
- This helper is intentionally a bit more general than the current
split_partition_exprcontract, which now only feeds range-only conjunctions into the main split path.