in src/common/schema.rs [179:199]
fn supports_filters_pushdown(
&self,
filters: &[&Expr],
) -> datafusion::common::Result<Vec<TableProviderFilterPushDown>> {
filters
.iter()
.map(|f| {
let filters = split_conjunction(f);
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)
}
})
.collect()
}