MCPcopy Create free account
hub / github.com/apache/datafusion / create_file_opener

Method create_file_opener

datafusion/datasource-json/src/source.rs:171–200  ·  view source on GitHub ↗
(
        &self,
        object_store: Arc<dyn ObjectStore>,
        base_config: &FileScanConfig,
        _partition: usize,
    )

Source from the content-addressed store, hash-verified

169
170impl FileSource for JsonSource {
171 fn create_file_opener(
172 &self,
173 object_store: Arc<dyn ObjectStore>,
174 base_config: &FileScanConfig,
175 _partition: usize,
176 ) -> Result<Arc<dyn FileOpener>> {
177 // Get the projected file schema for JsonOpener
178 let file_schema = self.table_schema.file_schema();
179 let projected_schema =
180 Arc::new(file_schema.project(&self.projection.file_indices)?);
181
182 let mut opener = Arc::new(JsonOpener {
183 batch_size: self
184 .batch_size
185 .expect("Batch size must set before creating opener"),
186 projected_schema,
187 file_compression_type: base_config.file_compression_type,
188 object_store,
189 newline_delimited: self.newline_delimited,
190 }) as Arc<dyn FileOpener>;
191
192 // Wrap with ProjectionOpener
193 opener = ProjectionOpener::try_new(
194 self.projection.clone(),
195 Arc::clone(&opener),
196 self.table_schema.file_schema(),
197 )?;
198
199 Ok(opener)
200 }
201
202 fn table_schema(&self) -> &datafusion_datasource::TableSchema {
203 &self.table_schema

Callers

nothing calls this directly

Calls 4

newFunction · 0.85
file_schemaMethod · 0.45
projectMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected