From e34955b287ee91dad6b6d2558aa808d20eefa367 Mon Sep 17 00:00:00 2001 From: silverqx Date: Thu, 14 Jul 2022 17:04:13 +0200 Subject: [PATCH] =?UTF-8?q?fixed=20QueryBuilder=20after=20revisit=20?= =?UTF-8?q?=F0=9F=A4=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/orm/query/querybuilder.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/orm/query/querybuilder.cpp b/src/orm/query/querybuilder.cpp index 8d3eeea03..43c312d97 100644 --- a/src/orm/query/querybuilder.cpp +++ b/src/orm/query/querybuilder.cpp @@ -101,13 +101,15 @@ QString Builder::toSql() namespace { /*! Flat bindings map for an insert statement. */ - const auto flatValuesForInsert = [](auto &&values) + const auto flatValuesForInsert = [](const auto &values) { + // All 'values' are const lvalues so no need to for rvalue 'values' + QVector flattenValues; - for (auto &&insertMap : values) - for (auto &&value : insertMap) - flattenValues << std::move(value); + for (const auto &insertMap : values) + for (const auto &value : insertMap) + flattenValues << value; return flattenValues; }; @@ -148,11 +150,11 @@ Builder::insert(const QVector &columns, // FEATURE dilemma primarykey, add support for Model::KeyType in QueryBuilder/TinyBuilder or should it be QVariant and runtime type check? 🤔 silverqx quint64 Builder::insertGetId(const QVariantMap &values, const QString &sequence) { - QVector valuesVector {values}; + const QVector valuesVector {values}; auto query = m_connection.insert( m_grammar.compileInsertGetId(*this, valuesVector, sequence), - cleanBindings(flatValuesForInsert(std::move(valuesVector)))); + cleanBindings(flatValuesForInsert(valuesVector))); // FEATURE dilemma primarykey, Model::KeyType vs QVariant, Processor::processInsertGetId() silverqx return query.lastInsertId().value(); @@ -205,7 +207,7 @@ std::tuple Builder::remove() void Builder::truncate() { - for (const auto [sql, bindings] : m_grammar.compileTruncate(*this)) + for (auto &&[sql, bindings] : m_grammar.compileTruncate(*this)) /* Postgres doesn't execute truncate statement as prepared query: https://www.postgresql.org/docs/13/sql-prepare.html */ if (m_connection.driverName() == QPSQL)