From ee5efe06e66c250cb822c1f20e76d965b1f65053 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 18 Sep 2017 15:53:51 +0200 Subject: [PATCH] Sqlite: Don't copy values for binding In Sqlite as you bind value you can bind or simply use a reference to the bound values. Because we hold the values anyway we do not copy them. Change-Id: I11c6fa5036ea958c8e48e3a117ad4a002d749c22 Reviewed-by: Tim Jenssen Reviewed-by: Marco Bubke --- src/libs/sqlite/sqlitestatement.cpp | 2 +- src/libs/sqlite/sqlitestatement.h | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/libs/sqlite/sqlitestatement.cpp b/src/libs/sqlite/sqlitestatement.cpp index 1e7a0829c89..ba64f44a398 100644 --- a/src/libs/sqlite/sqlitestatement.cpp +++ b/src/libs/sqlite/sqlitestatement.cpp @@ -188,7 +188,7 @@ void Statement::bind(int index, Utils::SmallStringView text) index, text.data(), int(text.size()), - SQLITE_TRANSIENT); + SQLITE_STATIC); checkForBindingError(resultCode); } diff --git a/src/libs/sqlite/sqlitestatement.h b/src/libs/sqlite/sqlitestatement.h index d1f7bb1906f..6c3848e6798 100644 --- a/src/libs/sqlite/sqlitestatement.h +++ b/src/libs/sqlite/sqlitestatement.h @@ -84,26 +84,26 @@ protected: } template - void bindValues(ValueType... values) + void bindValues(const ValueType&... values) { bindValuesByIndex(1, values...); } template - void write(ValueType... values) + void write(const ValueType&... values) { bindValuesByIndex(1, values...); execute(); } template - void bindNameValues(ValueType... values) + void bindNameValues(const ValueType&... values) { bindValuesByName(values...); } template - void writeNamed(ValueType... values) + void writeNamed(const ValueType&... values) { bindValuesByName(values...); execute(); @@ -420,26 +420,26 @@ private: } template - void bindValuesByIndex(int index, ValueType value) + void bindValuesByIndex(int index, const ValueType &value) { bind(index, value); } template - void bindValuesByIndex(int index, ValueType value, ValueTypes... values) + void bindValuesByIndex(int index, const ValueType &value, const ValueTypes&... values) { bind(index, value); bindValuesByIndex(index + 1, values...); } template - void bindValuesByName(Utils::SmallStringView name, ValueType value) + void bindValuesByName(Utils::SmallStringView name, const ValueType &value) { bind(bindingIndexForName(name), value); } template - void bindValuesByName(Utils::SmallStringView name, ValueType value, ValueTypes... values) + void bindValuesByName(Utils::SmallStringView name, const ValueType &value, const ValueTypes&... values) { bind(bindingIndexForName(name), value); bindValuesByName(values...);