@@ -17,16 +17,17 @@ use datafusion_common::Result as DFResult;
1717use datafusion_common:: Statistics ;
1818use datafusion_common:: config:: ConfigField ;
1919use datafusion_common:: config_namespace;
20+ use datafusion_common:: internal_datafusion_err;
2021use datafusion_common:: not_impl_err;
2122use datafusion_common:: parsers:: CompressionTypeVariant ;
2223use datafusion_common:: stats:: Precision ;
2324use datafusion_common_runtime:: SpawnedTask ;
25+ use datafusion_datasource:: TableSchema ;
2426use datafusion_datasource:: file:: FileSource ;
2527use datafusion_datasource:: file_compression_type:: FileCompressionType ;
2628use datafusion_datasource:: file_format:: FileFormat ;
2729use datafusion_datasource:: file_format:: FileFormatFactory ;
2830use datafusion_datasource:: file_scan_config:: FileScanConfig ;
29- use datafusion_datasource:: file_scan_config:: FileScanConfigBuilder ;
3031use datafusion_datasource:: file_sink_config:: FileSinkConfig ;
3132use datafusion_datasource:: sink:: DataSinkExec ;
3233use datafusion_datasource:: source:: DataSourceExec ;
@@ -363,6 +364,7 @@ impl FileFormat for VortexFormat {
363364 is_constant. as_exact ( ) . map ( |_| Precision :: Exact ( 1 ) )
364365 } )
365366 . unwrap_or ( Precision :: Absent ) ,
367+ byte_size : Precision :: Absent ,
366368 }
367369 } )
368370 . collect :: < Vec < _ > > ( ) ;
@@ -386,14 +388,12 @@ impl FileFormat for VortexFormat {
386388 _state : & dyn Session ,
387389 file_scan_config : FileScanConfig ,
388390 ) -> DFResult < Arc < dyn ExecutionPlan > > {
389- let source = VortexSource :: new ( self . session . clone ( ) , self . file_cache . clone ( ) ) ;
390- let source = Arc :: new ( source) ;
391+ // We make sure the scan's source is the right type, but we don't have anything else to do here.
392+ if !file_scan_config. file_source ( ) . as_any ( ) . is :: < VortexSource > ( ) {
393+ return Err ( internal_datafusion_err ! ( "Expected VortexSource" ) ) ;
394+ }
391395
392- Ok ( DataSourceExec :: from_data_source (
393- FileScanConfigBuilder :: from ( file_scan_config)
394- . with_source ( source)
395- . build ( ) ,
396- ) )
396+ Ok ( DataSourceExec :: from_data_source ( file_scan_config) )
397397 }
398398
399399 async fn create_writer_physical_plan (
@@ -413,8 +413,9 @@ impl FileFormat for VortexFormat {
413413 Ok ( Arc :: new ( DataSinkExec :: new ( input, sink, order_requirements) ) as _ )
414414 }
415415
416- fn file_source ( & self ) -> Arc < dyn FileSource > {
416+ fn file_source ( & self , table_schema : TableSchema ) -> Arc < dyn FileSource > {
417417 Arc :: new ( VortexSource :: new (
418+ table_schema,
418419 self . session . clone ( ) ,
419420 self . file_cache . clone ( ) ,
420421 ) )
0 commit comments