| 289 | |
| 290 | impl FileSource for ArrowSource { |
| 291 | fn create_file_opener( |
| 292 | &self, |
| 293 | object_store: Arc<dyn ObjectStore>, |
| 294 | _base_config: &FileScanConfig, |
| 295 | _partition: usize, |
| 296 | ) -> Result<Arc<dyn FileOpener>> { |
| 297 | let split_projection = self.projection.clone(); |
| 298 | |
| 299 | let opener: Arc<dyn FileOpener> = match self.format { |
| 300 | ArrowFormat::File => Arc::new(ArrowFileOpener { |
| 301 | object_store, |
| 302 | projection: Some(split_projection.file_indices.clone()), |
| 303 | }), |
| 304 | ArrowFormat::Stream => Arc::new(ArrowStreamFileOpener { |
| 305 | object_store, |
| 306 | projection: Some(split_projection.file_indices.clone()), |
| 307 | }), |
| 308 | }; |
| 309 | ProjectionOpener::try_new( |
| 310 | split_projection, |
| 311 | opener, |
| 312 | self.table_schema.file_schema(), |
| 313 | ) |
| 314 | } |
| 315 | |
| 316 | fn with_batch_size(&self, _batch_size: usize) -> Arc<dyn FileSource> { |
| 317 | Arc::new(Self { ..self.clone() }) |