Skip to content

Commit 43057df

Browse files
committed
fail in planner if filter can no longer be pushed
Signed-off-by: Andrew Duffy <[email protected]>
1 parent a12e5c7 commit 43057df

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

vortex-datafusion/src/persistent/opener.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::sync::{Arc, Weak};
66

77
use arrow_schema::{ArrowError, DataType, Field, SchemaRef};
88
use datafusion_common::arrow::array::RecordBatch;
9-
use datafusion_common::{DataFusionError, Result as DFResult};
9+
use datafusion_common::{DataFusionError, Result as DFResult, internal_datafusion_err};
1010
use datafusion_datasource::file_meta::FileMeta;
1111
use datafusion_datasource::file_stream::{FileOpenFuture, FileOpener};
1212
use datafusion_datasource::schema_adapter::SchemaAdapterFactory;
@@ -294,17 +294,22 @@ impl FileOpener for VortexOpener {
294294
);
295295
}
296296

297-
let filter = filter
298-
.and_then(|f| {
299-
let exprs = split_conjunction(&f)
300-
.into_iter()
301-
.filter(|expr| can_be_pushed_down(expr, &predicate_file_schema))
302-
.collect::<Vec<_>>();
297+
let filter = match filter {
298+
None => None,
299+
Some(f) => {
300+
let exprs = split_conjunction(&f).into_iter().collect::<Vec<_>>();
303301

304-
make_vortex_predicate(&exprs).transpose()
305-
})
306-
.transpose()
307-
.map_err(|e| DataFusionError::External(e.into()))?;
302+
for expr in &exprs {
303+
if !can_be_pushed_down(expr, &predicate_file_schema) {
304+
internal_datafusion_err!("DataFusion predicate {expr} cannot be pushed down to Vortex file {} with schema {predicate_file_schema}",
305+
file_meta.object_meta.location);
306+
}
307+
}
308+
309+
make_vortex_predicate(&exprs)
310+
.map_err(|e| DataFusionError::External(e.into()))?
311+
}
312+
};
308313

309314
if let Some(limit) = limit
310315
&& filter.is_none()

0 commit comments

Comments
 (0)