diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-05-29 12:39:04 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-05-29 12:56:56 +0200 |
commit | c7f96f5301c2e60d1c5ef1e945e70e921afc71ce (patch) | |
tree | f727dea1b7da0e03f0ed64a7b7e7cd01d60a8e1f | |
parent | b22049ea14b62a2a743fd5fbd23563c566ef528a (diff) | |
download | qttools-c7f96f5301c2e60d1c5ef1e945e70e921afc71ce.tar.gz |
Close the last SELECT query with pending results
Ensure we close the last SELECT query in case
we read just one result. If we don't iterate
over all results available, the query may
block the database connection. The other
database connection won't be able to interact
with database until the open query is closed.
Fixes: QDS-779
Change-Id: I30cece520918a10972deaa3d093ffaea11cab5c0
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r-- | src/assistant/help/qhelpcollectionhandler.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/assistant/help/qhelpcollectionhandler.cpp b/src/assistant/help/qhelpcollectionhandler.cpp index c67c92518..ddf5edccc 100644 --- a/src/assistant/help/qhelpcollectionhandler.cpp +++ b/src/assistant/help/qhelpcollectionhandler.cpp @@ -278,6 +278,7 @@ bool QHelpCollectionHandler::isTimeStampCorrect(const TimeStamp &timeStamp) cons return false; const QString oldFileName = m_query->value(0).toString(); + m_query->clear(); if (oldFileName != timeStamp.fileName) return false; @@ -300,6 +301,7 @@ bool QHelpCollectionHandler::hasTimeStampInfo(const QString &nameSpace) const if (!m_query->next()) return false; + m_query->clear(); return true; } @@ -797,7 +799,10 @@ bool QHelpCollectionHandler::fileExists(const QUrl &url) const if (!m_query->exec() || !m_query->next()) return false; - return m_query->value(0).toInt(); + const int count = m_query->value(0).toInt(); + m_query->clear(); + + return count; } static QString prepareFilterQuery(int attributesCount, @@ -1328,7 +1333,10 @@ QString QHelpCollectionHandler::namespaceVersion(const QString &namespaceName) c if (!m_query->exec() || !m_query->next()) return QString(); - return m_query->value(0).toString(); + const QString ret = m_query->value(0).toString(); + m_query->clear(); + + return ret; } int QHelpCollectionHandler::registerNamespace(const QString &nspace, const QString &fileName) @@ -1352,8 +1360,10 @@ int QHelpCollectionHandler::registerNamespace(const QString &nspace, const QStri m_query->bindValue(0, nspace); m_query->bindValue(1, fi.absoluteDir().relativeFilePath(fileName)); int namespaceId = errorValue; - if (m_query->exec()) + if (m_query->exec()) { namespaceId = m_query->lastInsertId().toInt(); + m_query->clear(); + } if (namespaceId < 1) { emit error(tr("Cannot register namespace \"%1\".").arg(nspace)); return errorValue; @@ -1371,8 +1381,10 @@ int QHelpCollectionHandler::registerVirtualFolder(const QString &folderName, int m_query->bindValue(1, folderName); int virtualId = -1; - if (m_query->exec()) + if (m_query->exec()) { virtualId = m_query->lastInsertId().toInt(); + m_query->clear(); + } if (virtualId < 1) { emit error(tr("Cannot register virtual folder '%1'.").arg(folderName)); return -1; |