Postgres OID resolution query does not take into account current search_path (#2133)

* Fix oid resolution query

* Address review comments
This commit is contained in:
Marco Cameriero
2023-02-15 01:17:41 +01:00
committed by Austin Bonander
parent 9f1f682285
commit ab2ae26189
3 changed files with 72 additions and 11 deletions

View File

@@ -344,17 +344,13 @@ WHERE rngtypid = $1
}
// language=SQL
let (oid,): (Oid,) = query_as(
"
SELECT oid FROM pg_catalog.pg_type WHERE typname ILIKE $1
",
)
.bind(name)
.fetch_optional(&mut *self)
.await?
.ok_or_else(|| Error::TypeNotFound {
type_name: String::from(name),
})?;
let (oid,): (Oid,) = query_as("SELECT $1::regtype::oid")
.bind(name)
.fetch_optional(&mut *self)
.await?
.ok_or_else(|| Error::TypeNotFound {
type_name: String::from(name),
})?;
self.cache_type_oid.insert(name.to_string().into(), oid);
Ok(oid)

View File

@@ -176,6 +176,8 @@ impl Connection for PgConnection {
fn clear_cached_statements(&mut self) -> BoxFuture<'_, Result<(), Error>> {
Box::pin(async move {
self.cache_type_oid.clear();
let mut cleared = 0_usize;
self.wait_until_ready().await?;