diff --git a/crates/dbx-core/src/agent_connection.rs b/crates/dbx-core/src/agent_connection.rs index 8bad59d820..1a82d2ff69 100644 --- a/crates/dbx-core/src/agent_connection.rs +++ b/crates/dbx-core/src/agent_connection.rs @@ -5,14 +5,14 @@ use crate::models::connection::{ConnectionConfig, DatabaseType}; pub fn agent_connect_params(config: &ConnectionConfig, host: &str, port: u16, database: &str) -> serde_json::Value { let agent_database = if config.db_type == DatabaseType::MongoDb { mongo_agent_database(config, database) - } else if config.db_type == DatabaseType::Oracle { + } else if matches!(config.db_type, DatabaseType::Oracle | DatabaseType::OceanbaseOracle) { oracle_agent_database(config, database) } else { database.to_string() }; let connection_string = if config.db_type == DatabaseType::MongoDb { config.connection_url_with_host(host, port) - } else if config.db_type == DatabaseType::Oracle { + } else if matches!(config.db_type, DatabaseType::Oracle | DatabaseType::OceanbaseOracle) { oracle_jdbc_connection_string(config, host, port, database) } else if matches!(config.db_type, DatabaseType::Kingbase | DatabaseType::Highgo | DatabaseType::Vastbase) { postgres_like_agent_jdbc_connection_string(config, host, port, database) @@ -317,6 +317,19 @@ mod tests { assert_eq!(params["sysdba"], true); } + #[test] + fn oceanbase_oracle_uses_oracle_jdbc_connection_string_for_agent_protocol() { + let mut cfg = config(DatabaseType::OceanbaseOracle, Some("sys")); + cfg.host = "oceanbase.example.com".to_string(); + cfg.port = 2881; + + let params = agent_connect_params(&cfg, "oceanbase.example.com", 2881, "sys"); + + assert_eq!(params["database"], "sys"); + assert_eq!(params["sysdba"], false); + assert_eq!(params["connection_string"], "jdbc:oracle:thin:@//oceanbase.example.com:2881/sys"); + } + #[test] fn oracle_url_preserves_custom_jdbc_descriptor_and_rewrites_host_port() { let mut cfg = config(DatabaseType::Oracle, Some("ORCL"));