Put schema in quotes for postgres driver (#2436)

* Put schema in quotes for postgres driver

* Add tests
This commit is contained in:
Zoltán Szepesi 2024-12-24 00:39:52 +01:00 committed by GitHub
parent 8a256cec6a
commit e27e1d9657
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 1 deletions

View File

@ -79,7 +79,7 @@ impl SqlxPostgresConnector {
let set_search_path_sql = options
.schema_search_path
.as_ref()
.map(|schema| format!("SET search_path = {schema}"));
.map(|schema| format!("SET search_path = \"{schema}\""));
let lazy = options.connect_lazy;
let mut pool_options = options.sqlx_pool_options();
if let Some(sql) = set_search_path_sql {

View File

@ -140,3 +140,23 @@ pub async fn connection_ping_closed_postgres() {
ctx.delete().await;
}
#[sea_orm_macros::test]
#[cfg(feature = "sqlx-postgres")]
pub async fn connection_with_search_path_postgres() {
let ctx = TestContext::new("connection_with_search_path").await;
let base_url = std::env::var("DATABASE_URL").unwrap();
let mut opt = sea_orm::ConnectOptions::new(format!("{base_url}/connection_with_search_path"));
opt
// The connection pool has a single connection only
.max_connections(1)
// A controlled connection acquire timeout
.acquire_timeout(std::time::Duration::from_secs(2))
.set_schema_search_path("schema-with-special-characters");
let db = sea_orm::Database::connect(opt).await;
assert!(db.is_ok());
ctx.delete().await;
}