1212
1313use std:: sync:: Arc ;
1414
15- use datafusion_ducklake:: metadata_writer:: {
16- ColumnDef , DataFileInfo , MetadataWriter , WriteMode ,
17- } ;
15+ use datafusion_ducklake:: metadata_writer:: { ColumnDef , DataFileInfo , MetadataWriter , WriteMode } ;
1816use datafusion_ducklake:: {
1917 MulticatalogManager , PostgresMetadataWriter , initialize_multicatalog_schema,
2018} ;
@@ -85,7 +83,10 @@ async fn concurrent_get_or_create_schema_no_duplicates() {
8583 "all callers must see the same schema_id, got {:?}" ,
8684 ids
8785 ) ;
88- assert_eq ! ( created_count, 1 , "exactly one writer should report was_created" ) ;
86+ assert_eq ! (
87+ created_count, 1 ,
88+ "exactly one writer should report was_created"
89+ ) ;
8990
9091 // And the catalog only has one schema row.
9192 let n: i64 = sqlx:: query (
@@ -114,7 +115,9 @@ async fn concurrent_get_or_create_table_no_duplicates() {
114115 . unwrap ( ) ,
115116 ) ;
116117 let snapshot_id = writer. create_snapshot ( ) . unwrap ( ) ;
117- let ( schema_id, _) = writer. get_or_create_schema ( "public" , None , snapshot_id) . unwrap ( ) ;
118+ let ( schema_id, _) = writer
119+ . get_or_create_schema ( "public" , None , snapshot_id)
120+ . unwrap ( ) ;
118121
119122 let mut handles = Vec :: new ( ) ;
120123 for _ in 0 ..10 {
@@ -199,8 +202,12 @@ async fn seed_two_catalogs(pool: &PgPool) -> (i64, i64, i64, i64) {
199202 let mgr = MulticatalogManager :: new ( pool. clone ( ) ) ;
200203 let cat_a = mgr. create_catalog ( "cat_a" ) . await . unwrap ( ) ;
201204 let cat_b = mgr. create_catalog ( "cat_b" ) . await . unwrap ( ) ;
202- let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a) . await . unwrap ( ) ;
203- let wb = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_b) . await . unwrap ( ) ;
205+ let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a)
206+ . await
207+ . unwrap ( ) ;
208+ let wb = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_b)
209+ . await
210+ . unwrap ( ) ;
204211 wa. set_data_path ( "/data" ) . unwrap ( ) ;
205212
206213 let setup_a = wa
@@ -217,7 +224,9 @@ async fn seed_two_catalogs(pool: &PgPool) -> (i64, i64, i64, i64) {
217224async fn register_data_file_rejects_cross_catalog_table_id ( ) {
218225 let ( pool, _c) = spin_up_postgres ( ) . await . unwrap ( ) ;
219226 let ( cat_a, _cat_b, _table_a, table_b) = seed_two_catalogs ( & pool) . await ;
220- let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a) . await . unwrap ( ) ;
227+ let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a)
228+ . await
229+ . unwrap ( ) ;
221230 let snap = wa. create_snapshot ( ) . unwrap ( ) ;
222231
223232 let result = wa. register_data_file (
@@ -233,13 +242,12 @@ async fn register_data_file_rejects_cross_catalog_table_id() {
233242 ) ;
234243
235244 // And no row was inserted.
236- let n: i64 =
237- sqlx:: query ( "SELECT COUNT(*) FROM ducklake_data_file WHERE path = 'evil.parquet'" )
238- . fetch_one ( & pool)
239- . await
240- . unwrap ( )
241- . try_get ( 0 )
242- . unwrap ( ) ;
245+ let n: i64 = sqlx:: query ( "SELECT COUNT(*) FROM ducklake_data_file WHERE path = 'evil.parquet'" )
246+ . fetch_one ( & pool)
247+ . await
248+ . unwrap ( )
249+ . try_get ( 0 )
250+ . unwrap ( ) ;
243251 assert_eq ! ( n, 0 ) ;
244252}
245253
@@ -248,7 +256,9 @@ async fn register_data_file_rejects_cross_catalog_table_id() {
248256async fn end_table_files_rejects_cross_catalog_table_id ( ) {
249257 let ( pool, _c) = spin_up_postgres ( ) . await . unwrap ( ) ;
250258 let ( cat_a, _cat_b, _table_a, table_b) = seed_two_catalogs ( & pool) . await ;
251- let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a) . await . unwrap ( ) ;
259+ let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a)
260+ . await
261+ . unwrap ( ) ;
252262 let snap = wa. create_snapshot ( ) . unwrap ( ) ;
253263
254264 let result = wa. end_table_files ( table_b, snap) ;
@@ -265,7 +275,9 @@ async fn end_table_files_rejects_cross_catalog_table_id() {
265275async fn set_columns_rejects_cross_catalog_table_id ( ) {
266276 let ( pool, _c) = spin_up_postgres ( ) . await . unwrap ( ) ;
267277 let ( cat_a, _cat_b, _table_a, table_b) = seed_two_catalogs ( & pool) . await ;
268- let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a) . await . unwrap ( ) ;
278+ let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a)
279+ . await
280+ . unwrap ( ) ;
269281 let snap = wa. create_snapshot ( ) . unwrap ( ) ;
270282
271283 let result = wa. set_columns ( table_b, & users_cols ( ) , snap) ;
@@ -284,8 +296,12 @@ async fn get_or_create_table_rejects_cross_catalog_schema_id() {
284296 let mgr = MulticatalogManager :: new ( pool. clone ( ) ) ;
285297 let cat_a = mgr. create_catalog ( "cat_a" ) . await . unwrap ( ) ;
286298 let cat_b = mgr. create_catalog ( "cat_b" ) . await . unwrap ( ) ;
287- let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a) . await . unwrap ( ) ;
288- let wb = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_b) . await . unwrap ( ) ;
299+ let wa = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_a)
300+ . await
301+ . unwrap ( ) ;
302+ let wb = PostgresMetadataWriter :: with_pool ( pool. clone ( ) , cat_b)
303+ . await
304+ . unwrap ( ) ;
289305 wa. set_data_path ( "/data" ) . unwrap ( ) ;
290306
291307 // Set up a schema in each catalog.
@@ -322,12 +338,10 @@ async fn set_data_path_rejects_silent_overwrite() {
322338 // Same value is idempotent.
323339 w. set_data_path ( "/data/a" ) . unwrap ( ) ;
324340 // Different value rejected.
325- let err = w. set_data_path ( "/data/b" ) . expect_err ( "must reject overwrite" ) ;
326- assert ! (
327- err. to_string( ) . contains( "already set" ) ,
328- "got: {}" ,
329- err
330- ) ;
341+ let err = w
342+ . set_data_path ( "/data/b" )
343+ . expect_err ( "must reject overwrite" ) ;
344+ assert ! ( err. to_string( ) . contains( "already set" ) , "got: {}" , err) ;
331345 // Original value is untouched.
332346 assert_eq ! ( w. get_data_path( ) . unwrap( ) , "/data/a" ) ;
333347}
@@ -368,15 +382,23 @@ async fn rollback_leaves_no_orphan_rows() {
368382 ColumnDef :: new( "name" , "varchar" , true ) . unwrap( ) ,
369383 ] ;
370384 let snaps_before_fail: i64 = sqlx:: query ( "SELECT COUNT(*) FROM ducklake_snapshot" )
371- . fetch_one ( & pool) . await . unwrap ( ) . try_get ( 0 ) . unwrap ( ) ;
372- let err =
373- w. begin_write_transaction ( "public" , "users" , & bad_cols, WriteMode :: Append )
374- . expect_err ( "incompatible type change must fail" ) ;
385+ . fetch_one ( & pool)
386+ . await
387+ . unwrap ( )
388+ . try_get ( 0 )
389+ . unwrap ( ) ;
390+ let err = w
391+ . begin_write_transaction ( "public" , "users" , & bad_cols, WriteMode :: Append )
392+ . expect_err ( "incompatible type change must fail" ) ;
375393 assert ! ( err. to_string( ) . contains( "Schema evolution error" ) ) ;
376394
377395 // The failed call must not have left a snapshot behind.
378396 let snaps_after_fail: i64 = sqlx:: query ( "SELECT COUNT(*) FROM ducklake_snapshot" )
379- . fetch_one ( & pool) . await . unwrap ( ) . try_get ( 0 ) . unwrap ( ) ;
397+ . fetch_one ( & pool)
398+ . await
399+ . unwrap ( )
400+ . try_get ( 0 )
401+ . unwrap ( ) ;
380402 assert_eq ! (
381403 snaps_after_fail, snaps_before_fail,
382404 "rollback should leave snapshot count unchanged"
@@ -458,15 +480,12 @@ async fn unknown_catalog_id_errors_clearly_on_lock() {
458480 // but the map insert will succeed because there's no FK to ducklake_catalog.
459481 // The lock-taking methods are the ones that must reject. begin_write_transaction
460482 // takes the lock first:
461- let result = bogus. begin_write_transaction (
462- "public" ,
463- "users" ,
464- & users_cols ( ) ,
465- WriteMode :: Replace ,
466- ) ;
483+ let result =
484+ bogus. begin_write_transaction ( "public" , "users" , & users_cols ( ) , WriteMode :: Replace ) ;
467485 let err = result. expect_err ( "bogus catalog_id should error" ) ;
468486 assert ! (
469- err. to_string( ) . contains( "999999" ) || err. to_string( ) . contains( "not found" )
487+ err. to_string( ) . contains( "999999" )
488+ || err. to_string( ) . contains( "not found" )
470489 || err. to_string( ) . to_lowercase( ) . contains( "catalog" ) ,
471490 "expected catalog-related error, got: {}" ,
472491 err
0 commit comments