From 719ec378cdf3b5454ed4b991b78bc1ad4de382ba Mon Sep 17 00:00:00 2001 From: Conrad Ludgate Date: Tue, 18 Feb 2025 08:54:20 +0000 Subject: [PATCH] fix(local_proxy): discard all in tx (#10864) ## Problem `discard all` cannot run in a transaction (even if implicit) ## Summary of changes Split up the query into two, we don't need transaction support. --- proxy/src/serverless/local_conn_pool.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/proxy/src/serverless/local_conn_pool.rs b/proxy/src/serverless/local_conn_pool.rs index 7ed514ff65..137a2d6377 100644 --- a/proxy/src/serverless/local_conn_pool.rs +++ b/proxy/src/serverless/local_conn_pool.rs @@ -279,9 +279,12 @@ impl ClientInnerCommon { local_data.jti += 1; let token = resign_jwt(&local_data.key, payload, local_data.jti)?; + // discard all cannot run in a transaction. must be executed alone. + self.inner.batch_execute("discard all").await?; + // initiates the auth session // this is safe from query injections as the jwt format free of any escape characters. - let query = format!("discard all; select auth.jwt_session_init('{token}')"); + let query = format!("select auth.jwt_session_init('{token}')"); self.inner.batch_execute(&query).await?; let pid = self.inner.get_process_id();