Skip to content

Commit e70fa3a

Browse files
committed
Add maintainer comment in null_restriction.rs
Clarify supported expression/operator families in the syntactic evaluator. Emphasize that returning None indicates deferral to authoritative evaluation, rather than "non-restricting." Ensure unsupported variants also return None for consistency.
1 parent d71dacc commit e70fa3a

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

datafusion/optimizer/src/push_down_filter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2535,8 +2535,8 @@ mod tests {
25352535
}
25362536

25372537
#[test]
2538-
fn scalar_subquery_cross_join_filter_is_treated_as_join_condition_candidate(
2539-
) -> Result<()> {
2538+
fn scalar_subquery_cross_join_filter_is_treated_as_join_condition_candidate()
2539+
-> Result<()> {
25402540
let predicate = col("s.acctbal").gt(col("__scalar_sq_1.avg_acctbal"));
25412541

25422542
assert!(can_evaluate_as_join_condition(&predicate)?);

datafusion/optimizer/src/utils/null_restriction.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,15 @@ fn syntactic_null_substitution_value(
127127
expr: &Expr,
128128
join_cols: &HashSet<&Column>,
129129
) -> Option<NullSubstitutionValue> {
130+
// This evaluator intentionally supports a strict subset of expressions:
131+
// aliases/columns/literals, boolean combinators (NOT/AND/OR), null checks
132+
// (IS [NOT] NULL), BETWEEN, strict-null-preserving unary operators
133+
// (CAST/TRY_CAST/NEGATIVE), LIKE/SIMILAR TO, and binary operators handled in
134+
// `syntactic_binary_value`.
135+
//
136+
// Returning `None` means "defer to the authoritative evaluator" rather than
137+
// "not null-restricting". Any unsupported expression variant must return
138+
// `None` so callers can safely fall back to full expression evaluation.
130139
match expr {
131140
Expr::Alias(alias) => {
132141
syntactic_null_substitution_value(alias.expr.as_ref(), join_cols)

0 commit comments

Comments
 (0)