diff options
author | Valerio Valerio <valerio.valerio@nokia.com> | 2012-02-28 13:57:24 +0200 |
---|---|---|
committer | Valerio Valerio <valerio.valerio@nokia.com> | 2012-02-28 13:57:24 +0200 |
commit | c72c2d85f7e30648c543bccacead5c048adba504 (patch) | |
tree | a135ce0c154fd7914210336b8b39406ab73dfafd | |
parent | 3496a1d5b6eb57e8af7dab5b3305f3f40802601b (diff) |
Fix bug when re-parenting messages to the thread of their new predecessor.2012W09
-rw-r--r-- | src/libraries/qmfclient/qmailstore_p.cpp | 24 |
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; |