From 831883f1565caaed1bca79fc714bbc97ef6b872e Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Wed, 13 May 2026 05:34:01 +0800 Subject: [PATCH] perf(agent): use single execute_transaction RPC for batch commits --- crates/dbx-core/src/query.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/dbx-core/src/query.rs b/crates/dbx-core/src/query.rs index 9d7ac67c1f..1ae1c93f8f 100644 --- a/crates/dbx-core/src/query.rs +++ b/crates/dbx-core/src/query.rs @@ -675,6 +675,18 @@ async fn exec_tx_explicit_inner( schema: Option<&str>, start: std::time::Instant, ) -> Result { + let conns = state.connections.read().await; + if let Some(crate::connection::PoolKind::Agent(client)) = conns.get(pool_key) { + let mut client = client.lock().await; + let params = serde_json::json!({ + "statements": statements, + "schema": schema, + }); + let result: db::QueryResult = client.call("execute_transaction", params).await?; + return Ok(db::QueryResult { execution_time_ms: start.elapsed().as_millis(), ..result }); + } + drop(conns); + do_execute(state, pool_key, "BEGIN", schema, None) .await .map_err(|e| format!("Failed to begin transaction: {}", e))?;