Skip to main content

Module split

Module split 

Source
Expand description

Expression split utilities for partition rules.

This module provides a conservative way to split one partition expression R by a split expression S into:

  • left = R AND S
  • right = R AND NOT(S)

The implementation intentionally reuses existing partition components (Collider, simplify, PartitionChecker) and degrades to no-split when an unsupported shape/type is encountered.

Structsยง

CollectedConjunction ๐Ÿ”’
LowerBound ๐Ÿ”’
UpperBound ๐Ÿ”’

Enumsยง

ExprSplitDegradeReason

Functionsยง

atom_col_op_val ๐Ÿ”’
Extracts (column, op, value) from a canonicalized atomic expression.
collect_and_atoms ๐Ÿ”’
Flattens an expression into atomic terms when it is a pure conjunction tree.
collect_conjunction_bounds ๐Ÿ”’
Collects per-column bounds and passthrough atoms from a pure AND tree.
discrete_value_index ๐Ÿ”’
fold_and_exprs ๐Ÿ”’
Folds a list of expressions into a left-associated AND tree. Returns None if the input list is empty.
is_atomic_range_expr ๐Ÿ”’
Returns whether expr is an atomic column op value range predicate.
is_domain_max_value ๐Ÿ”’
is_empty_and_conjunction ๐Ÿ”’
Detects whether a pure conjunction expression is definitely unsatisfiable.
is_infinite_value ๐Ÿ”’
is_nan_value ๐Ÿ”’
is_strictly_greater_than_domain_max ๐Ÿ”’
is_supported_value ๐Ÿ”’
negate_split_expr
Rewrites NOT(expr) into an equivalent PartitionExpr without introducing a unary NOT node.
prefer_lower ๐Ÿ”’
prefer_upper ๐Ÿ”’
push_unique_expr ๐Ÿ”’
simplify_and_bounds ๐Ÿ”’
Simplifies conjunction-only range predicates by keeping the tightest bounds per column.
split_partition_expr
Splits one partition expression with a split predicate.
update_lower_bound ๐Ÿ”’
update_upper_bound ๐Ÿ”’
validate_atomic ๐Ÿ”’
validate_base_expr_shape ๐Ÿ”’
Validates that base_expr stays within the range-only split contract.
validate_split_expr_shape ๐Ÿ”’
Validates that split_expr is a single atomic range predicate.
validate_supported_expr