@@ -6,7 +6,7 @@ use std::sync::{Arc, Weak};
66
77use arrow_schema:: { ArrowError , DataType , Field , SchemaRef } ;
88use datafusion_common:: arrow:: array:: RecordBatch ;
9- use datafusion_common:: { DataFusionError , Result as DFResult } ;
9+ use datafusion_common:: { DataFusionError , Result as DFResult , internal_datafusion_err } ;
1010use datafusion_datasource:: file_meta:: FileMeta ;
1111use datafusion_datasource:: file_stream:: { FileOpenFuture , FileOpener } ;
1212use 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