@@ -61,6 +61,8 @@ pub struct IcebergScanExec {
6161 catalog_properties : HashMap < String , String > ,
6262 /// Pre-planned file scan tasks
6363 tasks : Vec < FileScanTask > ,
64+ /// Number of data files to read concurrently
65+ data_file_concurrency_limit : usize ,
6466 /// Metrics
6567 metrics : ExecutionPlanMetricsSet ,
6668}
@@ -71,6 +73,7 @@ impl IcebergScanExec {
7173 schema : SchemaRef ,
7274 catalog_properties : HashMap < String , String > ,
7375 tasks : Vec < FileScanTask > ,
76+ data_file_concurrency_limit : usize ,
7477 ) -> Result < Self , ExecutionError > {
7578 let output_schema = schema;
7679 let plan_properties = Self :: compute_properties ( Arc :: clone ( & output_schema) , 1 ) ;
@@ -83,6 +86,7 @@ impl IcebergScanExec {
8386 plan_properties,
8487 catalog_properties,
8588 tasks,
89+ data_file_concurrency_limit,
8690 metrics,
8791 } )
8892 }
@@ -158,7 +162,7 @@ impl IcebergScanExec {
158162
159163 let reader = iceberg:: arrow:: ArrowReaderBuilder :: new ( file_io)
160164 . with_batch_size ( batch_size)
161- . with_data_file_concurrency_limit ( context . session_config ( ) . target_partitions ( ) )
165+ . with_data_file_concurrency_limit ( self . data_file_concurrency_limit )
162166 . with_row_selection_enabled ( true )
163167 . build ( ) ;
164168
0 commit comments