1- use datafusion_iceberg:: planner:: IcebergQueryPlanner ;
21use crate :: error:: { extract_error_message, Error , Result } ;
32use crate :: models:: { Credentials , StorageProfile , StorageProfileCreateRequest } ;
43use crate :: models:: { Warehouse , WarehouseCreateRequest } ;
@@ -10,7 +9,6 @@ use async_trait::async_trait;
109use bytes:: Bytes ;
1110use datafusion:: execution:: context:: SessionContext ;
1211use datafusion:: prelude:: CsvReadOptions ;
13- use datafusion:: execution:: SessionStateBuilder ;
1412use datafusion_iceberg:: catalog:: catalog:: IcebergCatalog ;
1513use iceberg_rest_catalog:: apis:: configuration:: Configuration ;
1614use iceberg_rest_catalog:: catalog:: RestCatalog ;
@@ -20,7 +18,6 @@ use object_store::{ObjectStore, PutPayload};
2018use rusoto_core:: { HttpClient , Region } ;
2119use rusoto_credential:: StaticProvider ;
2220use rusoto_s3:: { GetBucketAclRequest , S3Client , S3 } ;
23- use std:: any:: Any ;
2421use std:: collections:: HashMap ;
2522use std:: sync:: Arc ;
2623use url:: Url ;
@@ -174,7 +171,7 @@ impl ControlService for ControlServiceImpl {
174171 & self ,
175172 warehouse_id : & Uuid ,
176173 database_name : & String ,
177- table_name : & String ,
174+ _table_name : & String ,
178175 query : & String ,
179176 ) -> Result < String > {
180177 let warehouse = self . get_warehouse ( * warehouse_id) . await ?;
@@ -266,12 +263,9 @@ impl ControlService for ControlServiceImpl {
266263 } ;
267264 let endpoint_url = Url :: parse ( storage_profile. endpoint . clone ( ) . unwrap ( ) . as_str ( ) )
268265 . map_err ( |e| Error :: DataFusionError ( format ! ( "Invalid endpoint URL: {}" , e) ) ) ?;
269-
270266 ctx. register_object_store ( & endpoint_url, Arc :: from ( object_store) ) ;
271- let df = ctx. read_csv ( path_string, CsvReadOptions :: new ( ) ) . await ?;
272- let data = df. collect ( ) . await ?;
273267
274- println ! ( "{:?}" , data) ;
268+ // println!("{:?}", data);
275269 // Commented code is writing with iceberg-rust-jankaul
276270 // Let it sit here just in case
277271 //////////////////////////////////////
@@ -337,22 +331,22 @@ impl ControlService for ControlServiceImpl {
337331 // ),
338332 ] )
339333 } ;
340- let catalog = icelake:: catalog:: load_catalog ( & config) . await . unwrap ( ) ;
341-
342- let table_ident = TableIdentifier :: new ( vec ! [ database_name , table_name ] ) . unwrap ( ) ;
343- let mut table = catalog . load_table ( & table_ident ) . await . unwrap ( ) ;
334+ let catalog = icelake:: catalog:: load_catalog ( & config) . await ? ;
335+ let table_ident = TableIdentifier :: new ( vec ! [ database_name , table_name ] ) ? ;
336+ let mut table = catalog . load_table ( & table_ident ) . await ? ;
337+ let table_schema = table . current_arrow_schema ( ) ? ;
344338 println ! ( "{:?}" , table. table_name( ) ) ;
339+
340+ let df = ctx. read_csv ( path_string, CsvReadOptions :: new ( ) . schema ( & * table_schema) ) . await ?;
341+ let data = df. collect ( ) . await ?;
342+
345343 let builder = table
346- . writer_builder ( )
347- . unwrap ( )
348- . rolling_writer_builder ( None )
349- . unwrap ( ) ;
344+ . writer_builder ( ) ?
345+ . rolling_writer_builder ( None ) ?;
350346 let mut writer = table
351- . writer_builder ( )
352- . unwrap ( )
347+ . writer_builder ( ) ?
353348 . build_append_only_writer ( builder)
354- . await
355- . unwrap ( ) ;
349+ . await ?;
356350
357351 for r in data {
358352 writer. write ( & r) . await ?;
@@ -361,7 +355,7 @@ impl ControlService for ControlServiceImpl {
361355 let res: Vec < icelake:: types:: DataFile > = writer. close ( ) . await ?;
362356 let mut txn = icelake:: transaction:: Transaction :: new ( & mut table) ;
363357 txn. append_data_file ( res) ;
364- txn. commit ( ) . await . unwrap ( ) ;
358+ txn. commit ( ) . await ? ;
365359
366360 Ok ( ( ) )
367361 }
0 commit comments