Skip to content

Commit 5bba30d

Browse files
committed
Postgres: set plan_cache_mode in transaction
1 parent 4ceb879 commit 5bba30d

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

sqlx-postgres/src/connection/describe.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use crate::HashMap;
1212
use crate::{PgColumn, PgConnection, PgTypeInfo};
1313
use futures_core::future::BoxFuture;
1414
use smallvec::SmallVec;
15+
use sqlx_core::acquire::Acquire;
1516
use sqlx_core::executor::Executor;
1617
use sqlx_core::query_builder::QueryBuilder;
1718
use std::sync::Arc;
@@ -522,9 +523,10 @@ WHERE rngtypid = $1
522523

523524
let mut explain = format!("EXPLAIN (VERBOSE, FORMAT JSON) EXECUTE {stmt_id_display}");
524525
let mut comma = false;
526+
let mut tx = self.begin().await?;
525527

526528
if params_len > 0 {
527-
self.execute("set plan_cache_mode = force_generic_plan;")
529+
tx.execute("set local plan_cache_mode = force_generic_plan;")
528530
.await?;
529531

530532
explain += "(";
@@ -543,7 +545,9 @@ WHERE rngtypid = $1
543545
}
544546

545547
let (Json(explains),): (Json<SmallVec<[Explain; 1]>>,) =
546-
query_as(&explain).fetch_one(self).await?;
548+
query_as(&explain).fetch_one(&mut *tx).await?;
549+
550+
tx.rollback().await?;
547551

548552
let mut nullables = Vec::new();
549553

0 commit comments

Comments
 (0)