in src/common/schema.rs [166:181]
fn supports_filter_pushdown(
&self,
filter: &Expr,
) -> datafusion_common::Result<TableProviderFilterPushDown> {
let filters = split_conjunction(filter);
if filters.iter().all(|f| is_supported_push_down_expr(f)) {
// Push down filters to the tablescan operation if all are supported
Ok(TableProviderFilterPushDown::Exact)
} else if filters.iter().any(|f| is_supported_push_down_expr(f)) {
// Partially apply the filter in the TableScan but retain
// the Filter operator in the plan as well
Ok(TableProviderFilterPushDown::Inexact)
} else {
Ok(TableProviderFilterPushDown::Unsupported)
}
}