fn extract_non_nullable_columns(
expr: &Expr,
non_nullable_cols: &mut Vec<Column>,
left_schema: &Arc<DFSchema>,
right_schema: &Arc<DFSchema>,
top_level: bool,
)Expand description
Recursively traverses expr, if expr returns false when any inputs are null, treats columns of both sides as non_nullable columns.
For and/or expr, extracts from all sub exprs and merges the columns. For or expr, if one of sub exprs returns true, discards all columns from or expr. For IS NOT NULL/NOT expr, always returns false for NULL input. extracts columns from these exprs. For all other exprs, fall through