2020use color_eyre:: { eyre, Result } ;
2121use datafusion:: catalog:: MemoryCatalogProviderList ;
2222use 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+ } ;
2427use datafusion:: execution:: context:: SessionState ;
2528use datafusion:: execution:: runtime_env:: RuntimeEnv ;
2629use 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 ( ) ;
0 commit comments