From 3427ef2e69c5e2c12825a8252be58a54461c8115 Mon Sep 17 00:00:00 2001 From: jkaczman Date: Mon, 24 Aug 2026 13:12:15 -0400 Subject: [PATCH 1/4] Remove unneccessary clone of Ast When constructing a RouterContext, the code always cloned the AST if it was present, assuming cloning is cheap. It isn't. There is potentially a String and Vec on the Ast which are getting deep copied, every time. RouterContext never needs ownership of the Ast, and already takes a lifetime, so removing the clone is relatively trivial --- pgdog/src/frontend/router/context.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pgdog/src/frontend/router/context.rs b/pgdog/src/frontend/router/context.rs index 7d32a3520..04afa6a03 100644 --- a/pgdog/src/frontend/router/context.rs +++ b/pgdog/src/frontend/router/context.rs @@ -30,7 +30,7 @@ pub struct RouterContext<'a> { /// Sticky omnisharded index. pub(super) sticky: Sticky, /// AST. - pub(super) ast: Option, + pub(super) ast: Option<&'a Ast>, /// Schema. pub(super) schema: Schema, /// Sharding key translations resolved for this statement. Routing @@ -61,7 +61,7 @@ impl<'a> RouterContext<'a> { two_pc: cluster.two_pc_enabled(), sticky, query, - ast: buffer.ast.clone(), + ast: buffer.ast.as_ref(), schema: cluster.schema(), resolved_lookups: ResolvedLookups::default(), }) From 94be7a71bad5eb917a7c6af251fefb5106ce41c5 Mon Sep 17 00:00:00 2001 From: jkaczman Date: Mon, 24 Aug 2026 13:46:32 -0400 Subject: [PATCH 2/4] cargo fmt --- integration/rust/run.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 integration/rust/run.sh diff --git a/integration/rust/run.sh b/integration/rust/run.sh old mode 100644 new mode 100755 From 7d2a340ed09f159df2fd15100c97f4b6c320e17b Mon Sep 17 00:00:00 2001 From: jkaczman Date: Mon, 24 Aug 2026 13:47:44 -0400 Subject: [PATCH 3/4] Cargo clippy --- pgdog/src/frontend/router/parser/query/mod.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pgdog/src/frontend/router/parser/query/mod.rs b/pgdog/src/frontend/router/parser/query/mod.rs index 48a6efc2f..3433e8949 100644 --- a/pgdog/src/frontend/router/parser/query/mod.rs +++ b/pgdog/src/frontend/router/parser/query/mod.rs @@ -265,7 +265,6 @@ impl QueryParser { let statement = context .router_context .ast - .clone() .ok_or(Error::EmptyQuery)?; if let Some(stmt) = statement.ast.stmts().next() { @@ -388,7 +387,7 @@ impl QueryParser { ShardWithPriority::new_override_canonical_schema_info(Shard::Direct(0)), ))); } else { - self.select(&statement, stmt, context) + self.select(statement, stmt, context) } } @@ -444,7 +443,7 @@ impl QueryParser { Node::ExecuteStmt(stmt) => self.execute(stmt, context), - Node::ExplainStmt(stmt) => self.explain(&statement, stmt, context), + Node::ExplainStmt(stmt) => self.explain(statement, stmt, context), Node::DiscardStmt { .. } => { return Ok(Command::Discard { @@ -479,7 +478,7 @@ impl QueryParser { // Run plugins, if any. self.plugins( context, - &statement, + statement, match &command { Command::Query(query) => query.is_read(), _ => false, From 062e9576c50ecc37e50b4de3fac5e6e43c54b783 Mon Sep 17 00:00:00 2001 From: jkaczman Date: Mon, 24 Aug 2026 13:49:39 -0400 Subject: [PATCH 4/4] Cargo fmt --- pgdog/src/frontend/router/parser/query/mod.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pgdog/src/frontend/router/parser/query/mod.rs b/pgdog/src/frontend/router/parser/query/mod.rs index 3433e8949..9ef367b3f 100644 --- a/pgdog/src/frontend/router/parser/query/mod.rs +++ b/pgdog/src/frontend/router/parser/query/mod.rs @@ -262,10 +262,7 @@ impl QueryParser { } } - let statement = context - .router_context - .ast - .ok_or(Error::EmptyQuery)?; + let statement = context.router_context.ast.ok_or(Error::EmptyQuery)?; if let Some(stmt) = statement.ast.stmts().next() { self.ensure_explain_recorder(stmt, context);