()
| 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 | } |
nothing calls this directly
no test coverage detected