From ea49b325cebb9ad57ff2f477cc6b69924dbceb71 Mon Sep 17 00:00:00 2001 From: Denis Smirnov <sd@picodata.io> Date: Fri, 15 Apr 2022 18:39:26 +0700 Subject: [PATCH] perf: reduce string allocations in ir -> sql --- src/executor/engine/cartridge/backend/sql/ir.rs | 9 +++++++-- src/ir/expression.rs | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/executor/engine/cartridge/backend/sql/ir.rs b/src/executor/engine/cartridge/backend/sql/ir.rs index 9b31fdfdbe..3f221cc7d9 100644 --- a/src/executor/engine/cartridge/backend/sql/ir.rs +++ b/src/executor/engine/cartridge/backend/sql/ir.rs @@ -92,7 +92,10 @@ impl ExecutionPlan { match data { // TODO: should we care about plans without projections? // Or they should be treated as invalid? - SyntaxData::Alias(s) => sql.push_str(&format!("as {}", s.as_str())), + SyntaxData::Alias(s) => { + sql.push_str("as "); + sql.push_str(s); + } SyntaxData::CloseParenthesis => sql.push(')'), SyntaxData::Comma => sql.push(','), SyntaxData::Condition => sql.push_str("ON"), @@ -133,7 +136,9 @@ impl ExecutionPlan { let alias = &ir_plan.get_alias_from_reference_node(expr)?; if let Some(name) = rel_node.scan_name(ir_plan, *position)? { - sql.push_str(&format!("{}.{}", name, alias)); + sql.push_str(name); + sql.push('.'); + sql.push_str(alias); } else { sql.push_str(alias); } diff --git a/src/ir/expression.rs b/src/ir/expression.rs index 0123e7009f..259c993775 100644 --- a/src/ir/expression.rs +++ b/src/ir/expression.rs @@ -318,7 +318,6 @@ impl Plan { ))); } } - let mut result: Vec<usize> = Vec::new(); if col_names.is_empty() { -- GitLab