MCPcopy Create free account
hub / github.com/apache/paimon-rust / test_database_operations

Function test_database_operations

crates/paimon/src/catalog/filesystem.rs:455–512  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

453
454 #[tokio::test]
455 async fn test_database_operations() {
456 let (_temp_dir, catalog) = create_test_catalog();
457
458 // create and list
459 catalog
460 .create_database("db1", false, HashMap::new())
461 .await
462 .unwrap();
463 catalog
464 .create_database("db2", false, HashMap::new())
465 .await
466 .unwrap();
467 let databases = catalog.list_databases().await.unwrap();
468 assert_eq!(databases.len(), 2);
469 assert!(databases.contains(&"db1".to_string()));
470 assert!(databases.contains(&"db2".to_string()));
471
472 // create same db without ignore_if_exists -> error
473 let result = catalog.create_database("db1", false, HashMap::new()).await;
474 assert!(result.is_err());
475 assert!(matches!(result, Err(Error::DatabaseAlreadyExist { .. })));
476
477 // create same db with ignore_if_exists -> ok
478 catalog
479 .create_database("db1", true, HashMap::new())
480 .await
481 .unwrap();
482
483 // create_database with location property -> error (filesystem catalog)
484 let mut props = HashMap::new();
485 props.insert(DB_LOCATION_PROP.to_string(), "/some/path".to_string());
486 let result = catalog.create_database("dbx", false, props).await;
487 assert!(result.is_err());
488 assert!(matches!(result, Err(Error::ConfigInvalid { .. })));
489
490 // drop empty database
491 catalog.drop_database("db1", false, false).await.unwrap();
492 let databases = catalog.list_databases().await.unwrap();
493 assert_eq!(databases.len(), 1);
494 assert!(databases.contains(&"db2".to_string()));
495
496 // drop non-empty database without cascade -> error
497 catalog
498 .create_database("db1", false, HashMap::new())
499 .await
500 .unwrap();
501 catalog
502 .create_table(&Identifier::new("db1", "table1"), testing_schema(), false)
503 .await
504 .unwrap();
505 let result = catalog.drop_database("db1", false, false).await;
506 assert!(result.is_err());
507 assert!(matches!(result, Err(Error::DatabaseNotEmpty { .. })));
508
509 // drop database with cascade
510 catalog.drop_database("db1", false, true).await.unwrap();
511 assert!(!catalog.database_exists("db1").await.unwrap());
512 }

Callers

nothing calls this directly

Calls 7

create_test_catalogFunction · 0.85
testing_schemaFunction · 0.85
insertMethod · 0.80
create_databaseMethod · 0.45
list_databasesMethod · 0.45
drop_databaseMethod · 0.45
create_tableMethod · 0.45

Tested by

no test coverage detected