diff --git a/integration/rust/run.sh b/integration/rust/run.sh old mode 100644 new mode 100755 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(), }) diff --git a/pgdog/src/frontend/router/parser/query/mod.rs b/pgdog/src/frontend/router/parser/query/mod.rs index 48a6efc2f..9ef367b3f 100644 --- a/pgdog/src/frontend/router/parser/query/mod.rs +++ b/pgdog/src/frontend/router/parser/query/mod.rs @@ -262,11 +262,7 @@ impl QueryParser { } } - let statement = context - .router_context - .ast - .clone() - .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); @@ -388,7 +384,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 +440,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 +475,7 @@ impl QueryParser { // Run plugins, if any. self.plugins( context, - &statement, + statement, match &command { Command::Query(query) => query.is_read(), _ => false,