@@ -2,7 +2,6 @@ use datafusion::prelude::*;
22use datafusion:: arrow:: record_batch:: RecordBatch ;
33use datafusion:: arrow:: datatypes:: { DataType , Field , Schema , TimeUnit } ;
44use datafusion:: arrow:: array:: { StringArray , TimestampMicrosecondArray , Int32Array , Int64Array , ListBuilder , StringBuilder } ;
5- use datafusion:: common:: DataFusionError ;
65use deltalake:: { DeltaTableBuilder , DeltaOps } ;
76use std:: collections:: HashMap ;
87use std:: sync:: { Arc , RwLock } ;
@@ -397,21 +396,18 @@ impl Database {
397396 let configs = self . project_configs . read ( ) . map_err ( |e| anyhow:: anyhow!( "Lock error: {:?}" , e) ) ?;
398397 configs. get ( project_id) . ok_or_else ( || anyhow:: anyhow!( "Project not found" ) ) ?. clone ( )
399398 } ;
400- let table_name = "table_events" . to_string ( ) ;
401- let optimize_sql = format ! ( "OPTIMIZE TABLE {}" , table_name) ;
402- match self . ctx . sql ( & optimize_sql) . await {
403- Ok ( _) => {
404- let new_table = DeltaTableBuilder :: from_uri ( & conn_str) . load ( ) . await ?;
405- * table_ref. write ( ) . map_err ( |e| anyhow:: anyhow!( "Lock error: {:?}" , e) ) ? = new_table;
406- COMPACTION_COUNTER . inc ( ) ;
407- tracing:: info!( "Compaction for project '{}' completed." , project_id) ;
408- Ok ( ( ) )
409- }
410- Err ( e) => {
411- tracing:: error!( "Failed to execute '{}': {:?}" , optimize_sql, e) ;
412- Err ( anyhow:: anyhow!( "Compaction failed: {:?}" , e) )
413- }
414- }
399+
400+ let ( table, _metrics) = DeltaOps :: try_from_uri ( & conn_str)
401+ . await
402+ . map_err ( |e| anyhow:: anyhow!( "Failed to load table for optimization: {:?}" , e) ) ?
403+ . optimize ( )
404+ . await
405+ . map_err ( |e| anyhow:: anyhow!( "Optimization failed: {:?}" , e) ) ?;
406+
407+ * table_ref. write ( ) . map_err ( |e| anyhow:: anyhow!( "Lock error: {:?}" , e) ) ? = table;
408+ COMPACTION_COUNTER . inc ( ) ;
409+ tracing:: info!( "Compaction for project '{}' completed." , project_id) ;
410+ Ok ( ( ) )
415411 }
416412
417413 pub async fn compact_all_projects ( & self ) -> Result < ( ) > {
0 commit comments