summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerio Valerio <valerio.valerio@nokia.com>2012-02-28 13:57:24 +0200
committerValerio Valerio <valerio.valerio@nokia.com>2012-02-28 13:57:24 +0200
commitc72c2d85f7e30648c543bccacead5c048adba504 (patch)
treea135ce0c154fd7914210336b8b39406ab73dfafd
parent3496a1d5b6eb57e8af7dab5b3305f3f40802601b (diff)
Fix bug when re-parenting messages to the thread of their new predecessor.2012W09
-rw-r--r--src/libraries/qmfclient/qmailstore_p.cpp24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/libraries/qmfclient/qmailstore_p.cpp b/src/libraries/qmfclient/qmailstore_p.cpp
index f5b28d1f..60e5fe67 100644
--- a/src/libraries/qmfclient/qmailstore_p.cpp
+++ b/src/libraries/qmfclient/qmailstore_p.cpp
@@ -8309,18 +8309,19 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::resolveMissingMessages(const
obsoleteThreadIds.append(QVariant(extractValue<quint64>(query.value(0))));
}
- {
- // Attach the descendants to the thread of their new predecessor
- QSqlQuery query(simpleQuery("UPDATE mailmessages SET parentthreadid=(SELECT parentthreadid FROM mailmessages WHERE id=?)",
- QVariantList() << message.id().toULongLong(),
- Key("id", QMailMessageKey::id(*updatedMessageIds)),
- "resolveMissingMessages mailmessages update query"));
- if (query.lastError().type() != QSqlError::NoError)
- return DatabaseFailure;
- }
-
if (!obsoleteThreadIds.isEmpty()) {
{
+ // Attach the descendants to the thread of their new predecessor
+ QString sql("UPDATE mailmessages SET parentthreadid=(SELECT parentthreadid FROM mailmessages WHERE id=%1) "
+ "WHERE parentthreadid IN %2");
+ QSqlQuery query(simpleQuery(sql.arg(message.id().toULongLong()).arg(expandValueList(obsoleteThreadIds)),
+ QVariantList() << obsoleteThreadIds,
+ "resolveMissingMessages mailmessages update query"));
+ if (query.lastError().type() != QSqlError::NoError)
+ return DatabaseFailure;
+ }
+
+ {
// TODO: fix other columns as well if necessary
QString sql("UPDATE mailthreads "
"SET messagecount = messagecount + (SELECT SUM(messagecount) FROM mailthreads WHERE id IN %1), "
@@ -8332,6 +8333,7 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::resolveMissingMessages(const
if (query.lastError().type() != QSqlError::NoError)
return DatabaseFailure;
}
+
{
// Delete the obsolete threads
QString sql("DELETE FROM mailthreads WHERE id IN %1");
@@ -8340,9 +8342,9 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::resolveMissingMessages(const
"resolveMissingMessages mailthreads delete query"));
if (query.lastError().type() != QSqlError::NoError)
return DatabaseFailure;
+ }
}
}
- }
if (!baseSubject.isEmpty()) {
QMailMessageIdList ids;