Skip to content

Commit 19377fa

Browse files
FormatFactory Fixes (#343)
1 parent f4ae2a6 commit 19377fa

2 files changed

Lines changed: 19 additions & 15 deletions

File tree

crates/datafusion-app/src/extensions/builder.rs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
use color_eyre::{eyre, Result};
2121
use datafusion::catalog::MemoryCatalogProviderList;
2222
use datafusion::catalog::{CatalogProvider, CatalogProviderList, TableProviderFactory};
23-
use datafusion::datasource::file_format::FileFormatFactory;
23+
use datafusion::datasource::file_format::{
24+
csv::CsvFormatFactory, json::JsonFormatFactory, parquet::ParquetFormatFactory,
25+
FileFormatFactory,
26+
};
2427
use datafusion::execution::context::SessionState;
2528
use datafusion::execution::runtime_env::RuntimeEnv;
2629
use datafusion::execution::session_state::SessionStateBuilder;
@@ -55,7 +58,7 @@ pub struct DftSessionStateBuilder {
5558
execution_config: Option<ExecutionConfig>,
5659
session_config: SessionConfig,
5760
table_factories: Option<HashMap<String, Arc<dyn TableProviderFactory>>>,
58-
file_format_factories: Option<Vec<Arc<dyn FileFormatFactory>>>,
61+
file_format_factories: Vec<Arc<dyn FileFormatFactory>>,
5962
catalog_providers: Option<HashMap<String, Arc<dyn CatalogProvider>>>,
6063
runtime_env: Option<Arc<RuntimeEnv>>,
6164
}
@@ -79,7 +82,11 @@ impl Default for DftSessionStateBuilder {
7982
session_config: SessionConfig::default().with_information_schema(true),
8083
execution_config: None,
8184
table_factories: None,
82-
file_format_factories: None,
85+
file_format_factories: vec![
86+
Arc::new(ParquetFormatFactory::new()),
87+
Arc::new(CsvFormatFactory::new()),
88+
Arc::new(JsonFormatFactory::new()),
89+
],
8390
catalog_providers: None,
8491
runtime_env: None,
8592
}
@@ -99,7 +106,12 @@ impl DftSessionStateBuilder {
99106
session_config,
100107
execution_config: config,
101108
table_factories: None,
102-
file_format_factories: None,
109+
file_format_factories: vec![
110+
Arc::new(ParquetFormatFactory::new()),
111+
Arc::new(CsvFormatFactory::new()),
112+
Arc::new(JsonFormatFactory::new()),
113+
],
114+
103115
catalog_providers: None,
104116
runtime_env: None,
105117
};
@@ -120,10 +132,7 @@ impl DftSessionStateBuilder {
120132

121133
/// Add a file format factory to the list of file format factories on this builder
122134
pub fn add_file_format_factory(&mut self, factory: Arc<dyn FileFormatFactory>) {
123-
match &mut self.file_format_factories {
124-
None => self.file_format_factories = Some(vec![factory]),
125-
Some(factories) => factories.push(factory),
126-
}
135+
let _ = self.file_format_factories.push(factory);
127136
}
128137

129138
/// Add a catalog provider to the list of providers on this builder
@@ -190,9 +199,7 @@ impl DftSessionStateBuilder {
190199
if let Some(table_factories) = table_factories {
191200
builder = builder.with_table_factories(table_factories);
192201
}
193-
if let Some(file_format_factories) = file_format_factories {
194-
builder = builder.with_file_formats(file_format_factories);
195-
}
202+
builder = builder.with_file_formats(file_format_factories);
196203

197204
if let Some(catalog_providers) = catalog_providers {
198205
let catalogs_list = MemoryCatalogProviderList::new();

crates/datafusion-app/src/local.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,12 @@ impl ExecutionContext {
9797
executor = Some(dedicated_executor)
9898
}
9999

100-
#[allow(unused_mut)]
101100
let mut session_ctx = SessionContext::new_with_state(session_state);
101+
session_ctx = session_ctx.enable_url_table();
102102

103103
#[cfg(feature = "functions-json")]
104104
datafusion_functions_json::register_all(&mut session_ctx)?;
105105

106-
// Register Parquet Metadata Function
107-
let session_ctx = session_ctx.enable_url_table();
108-
109106
#[cfg(feature = "udfs-wasm")]
110107
{
111108
let wasm_udfs = create_wasm_udfs(&config.wasm_udf)?;

0 commit comments

Comments
 (0)