@@ -40,13 +40,14 @@ use datafusion::{
4040 physical_plan:: ExecutionPlan ,
4141} ;
4242use datafusion:: catalog:: { ScanArgs , ScanResult } ;
43+ use delta_kernel:: Engine ;
4344use delta_kernel:: table_configuration:: TableConfiguration ;
4445use serde:: { Deserialize , Serialize } ;
4546
4647pub use self :: scan:: { DeltaScanExec , DeltaNextPhysicalCodec } ;
4748pub ( crate ) use self :: scan:: KernelScanPlan ;
4849use crate :: delta_datafusion:: DeltaScanConfig ;
49- use crate :: delta_datafusion:: engine:: DataFusionEngine ;
50+ use crate :: delta_datafusion:: engine:: { DataFusionEngine , InjectedEngine } ;
5051use crate :: delta_datafusion:: table_provider:: TableProviderBuilder ;
5152use crate :: kernel:: { EagerSnapshot , Snapshot } ;
5253
@@ -175,7 +176,11 @@ impl TableProvider for DeltaScan {
175176 filters : & [ Expr ] ,
176177 limit : Option < usize > ,
177178 ) -> Result < Arc < dyn ExecutionPlan > > {
178- let engine = DataFusionEngine :: new_from_session ( session) ;
179+ let engine: Arc < dyn Engine > = session
180+ . config ( )
181+ . get_extension :: < InjectedEngine > ( )
182+ . map ( |e| e. 0 . clone ( ) )
183+ . unwrap_or_else ( || DataFusionEngine :: new_from_session ( session) ) ;
179184
180185 // Filter out file_id column from projection if present
181186 let file_id_idx = self
@@ -218,7 +223,11 @@ impl TableProvider for DeltaScan {
218223 }
219224
220225 async fn scan_with_args < ' a > ( & self , state : & dyn Session , args : ScanArgs < ' a > ) -> Result < ScanResult > {
221- let engine = DataFusionEngine :: new_from_session ( state) ;
226+ let engine: Arc < dyn Engine > = state
227+ . config ( )
228+ . get_extension :: < InjectedEngine > ( )
229+ . map ( |e| e. 0 . clone ( ) )
230+ . unwrap_or_else ( || DataFusionEngine :: new_from_session ( state) ) ;
222231
223232 // Filter out file_id column from projection if present
224233 let file_id_idx = self
0 commit comments