diff --git a/src/libs/sqlite/sqlitebasestatement.h b/src/libs/sqlite/sqlitebasestatement.h index 05fbfa625b4..4c4baa11b77 100644 --- a/src/libs/sqlite/sqlitebasestatement.h +++ b/src/libs/sqlite/sqlitebasestatement.h @@ -205,10 +205,12 @@ public: { Resetter resetter{*this}; std::vector resultValues; - resultValues.reserve(reserveSize); + resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); while (BaseStatement::next()) - emplaceBackValues(resultValues); + emplaceBackValues(resultValues); + + setMaximumResultCount(resultValues.size()); resetter.reset(); @@ -222,12 +224,14 @@ public: { Resetter resetter{*this}; std::vector resultValues; - resultValues.reserve(reserveSize); + resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); bindValues(queryValues...); while (BaseStatement::next()) - emplaceBackValues(resultValues); + emplaceBackValues(resultValues); + + setMaximumResultCount(resultValues.size()); resetter.reset(); @@ -241,7 +245,7 @@ public: const std::vector &queryValues) { std::vector resultValues; - resultValues.reserve(reserveSize); + resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); for (const QueryElementType &queryValue : queryValues) { Resetter resetter{*this}; @@ -250,6 +254,8 @@ public: while (BaseStatement::next()) emplaceBackValues(resultValues); + setMaximumResultCount(resultValues.size()); + resetter.reset(); } @@ -264,7 +270,7 @@ public: { using Container = std::vector; Container resultValues; - resultValues.reserve(reserveSize); + resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); for (const auto &queryTuple : queryTuples) { Resetter resetter{*this}; @@ -273,6 +279,8 @@ public: while (BaseStatement::next()) emplaceBackValues(resultValues); + setMaximumResultCount(resultValues.size()); + resetter.reset(); } @@ -427,6 +435,13 @@ private: bindTupleValuesElement(element, ColumnIndices()); } + void setMaximumResultCount(std::size_t count) + { + m_maximumResultCount = std::max(m_maximumResultCount, count); + } + +public: + std::size_t m_maximumResultCount = 0; }; } // namespace Sqlite