@@ -21,6 +21,7 @@ use datafusion::{
2121 execution:: object_store:: ObjectStoreRegistry ,
2222} ;
2323use datafusion_iceberg:: catalog:: catalog:: IcebergCatalog as DataFusionIcebergCatalog ;
24+ use futures:: future:: join_all;
2425use iceberg_rust:: object_store:: ObjectStoreBuilder ;
2526use iceberg_s3tables_catalog:: S3TablesCatalog ;
2627use object_store:: ObjectStore ;
@@ -248,7 +249,7 @@ impl EmbucketCatalogList {
248249 . await
249250 . context ( catalog_error:: DataFusionSnafu ) ?;
250251 Ok ( CachingCatalog :: new ( Arc :: new ( catalog) , name. to_string ( ) )
251- . with_refresh ( false )
252+ . with_refresh ( true )
252253 . with_catalog_type ( CatalogType :: S3tables ) )
253254 }
254255
@@ -387,22 +388,33 @@ impl EmbucketCatalogList {
387388 name : schema. clone ( ) ,
388389 } ;
389390 let tables = schema. schema . table_names ( ) ;
390- for table in tables {
391- if let Some ( table_provider) = schema
392- . schema
393- . table ( & table)
394- . await
395- . context ( catalog_error:: DataFusionSnafu ) ?
396- {
397- schema. tables_cache . insert (
398- table. clone ( ) ,
399- Arc :: new ( CachingTable :: new_with_schema (
400- table,
401- table_provider. schema ( ) ,
402- Arc :: clone ( & table_provider) ,
403- ) ) ,
404- ) ;
405- }
391+
392+ let futs = tables
393+ . iter ( )
394+ . map ( |table_name| async {
395+ let tp = schema
396+ . schema
397+ . table ( table_name)
398+ . await
399+ . context ( catalog_error:: DataFusionSnafu )
400+ . ok ( ) ?
401+ . map ( Arc :: new) ?;
402+
403+ Some ( ( table_name. clone ( ) , tp) )
404+ } )
405+ . collect :: < Vec < _ > > ( ) ;
406+
407+ let results = join_all ( futs) . await ;
408+ for res in results. into_iter ( ) . flatten ( ) {
409+ let ( table_name, table_provider) = res;
410+ schema. tables_cache . insert (
411+ table_name. clone ( ) ,
412+ Arc :: new ( CachingTable :: new_with_schema (
413+ table_name,
414+ table_provider. schema ( ) ,
415+ Arc :: clone ( & table_provider) ,
416+ ) ) ,
417+ ) ;
406418 }
407419 catalog
408420 . schemas_cache
0 commit comments