Hello community,

here is the log from the commit of package akonadi-server for openSUSE:Factory 
checked in at 2015-11-15 12:27:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/akonadi-server (Old)
 and      /work/SRC/openSUSE:Factory/.akonadi-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "akonadi-server"

Changes:
--------
--- /work/SRC/openSUSE:Factory/akonadi-server/akonadi-server.changes    
2015-10-19 22:30:27.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.akonadi-server.new/akonadi-server.changes       
2015-11-15 12:27:48.000000000 +0100
@@ -1,0 +2,9 @@
+Tue Nov 10 19:51:55 UTC 2015 - [email protected]
+
+- Update to KDE Applications 15.08.3
+   * KDE Applications 15.08.3 
+   * https://www.kde.org/announcements/announce-applications-15.08.3.php
+   * boo#954531
+
+
+-------------------------------------------------------------------

Old:
----
  akonadi-15.08.2.tar.xz

New:
----
  akonadi-15.08.3.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ akonadi-server.spec ++++++
--- /var/tmp/diff_new_pack.Rfqy0t/_old  2015-11-15 12:27:49.000000000 +0100
+++ /var/tmp/diff_new_pack.Rfqy0t/_new  2015-11-15 12:27:49.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           akonadi-server
-Version:        15.08.2
+Version:        15.08.3
 Release:        0
 %define rname   akonadi
 Summary:        PIM Storage Service

++++++ akonadi-15.08.2.tar.xz -> akonadi-15.08.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/akonadi-15.08.2/autotests/server/fetchhandlertest.cpp 
new/akonadi-15.08.3/autotests/server/fetchhandlertest.cpp
--- old/akonadi-15.08.2/autotests/server/fetchhandlertest.cpp   2015-09-11 
12:54:49.000000000 +0200
+++ new/akonadi-15.08.3/autotests/server/fetchhandlertest.cpp   2015-10-27 
17:54:02.000000000 +0100
@@ -232,7 +232,7 @@
 
         timer.start();
         QList<PimItem> items;
-        for (int i = 0; i < 10000; i++) {
+        for (int i = 0; i < 1000; i++) {
             
items.append(initializer->createItem(QString::number(i).toLatin1().constData(),col1));
         }
         qDebug() << timer.nsecsElapsed()/1.0e6 << "ms";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/akonadi-15.08.2/src/server/storage/collectionstatistics.cpp 
new/akonadi-15.08.3/src/server/storage/collectionstatistics.cpp
--- old/akonadi-15.08.2/src/server/storage/collectionstatistics.cpp     
2015-09-11 12:54:49.000000000 +0200
+++ new/akonadi-15.08.3/src/server/storage/collectionstatistics.cpp     
2015-10-27 17:54:02.000000000 +0100
@@ -57,11 +57,18 @@
 
 CollectionStatistics::Statistics 
CollectionStatistics::getCollectionStatistics(const Collection &col)
 {
+    static const QString SeenFlagsTableName = QStringLiteral("SeenFlags");
+    static const QString IgnoredFlagsTableName = 
QStringLiteral("IgnoredFlags");
+
+#define FLAGS_COLUMN(table, column) \
+    QStringLiteral("%1.%2").arg(table##TableName, 
PimItemFlagRelation::column())
+
     // COUNT(DISTINCT PimItemTable.id)
     CountQueryBuilder qb(PimItem::tableName(), PimItem::idFullColumnName(), 
CountQueryBuilder::Distinct);
     // SUM(PimItemTable.size)
-    qb.addAggregation(PimItem::sizeFullColumnName(), QLatin1String("sum"));
-    // SUM(CASE WHEN FlagTable.name IN ('\SEEN', '$IGNORED') THEN 1 ELSE 0 END)
+    qb.addAggregation(PimItem::sizeFullColumnName(), QStringLiteral("sum"));
+
+    // SUM(CASE WHEN SeenFlags.flag_id IS NOT NULL OR IgnoredFlags.flag_id IS 
NOT NULL THEN 1 ELSE 0 END)
     // This allows us to get read messages count in a single query with the 
other
     // statistics. It is much than doing two queries, because the database
     // only has to calculate the JOINs once.
@@ -69,17 +76,36 @@
     // Flag::retrieveByName() will hit the Entity cache, which allows us to 
avoid
     // a second JOIN with FlagTable, which PostgreSQL seems to struggle to 
optimize.
     Query::Condition cond(Query::Or);
-    cond.addValueCondition(PimItemFlagRelation::rightFullColumnName(),
-                           Query::Equals,
-                           
Flag::retrieveByName(QLatin1String(AKONADI_FLAG_SEEN)).id());
-    cond.addValueCondition(PimItemFlagRelation::rightFullColumnName(),
-                           Query::Equals,
-                           
Flag::retrieveByName(QLatin1String(AKONADI_FLAG_IGNORED)).id());
-    Query::Case caseStmt(cond, QLatin1String("1"), QLatin1String("0"));
-    qb.addAggregation(caseStmt, QLatin1String("sum"));
+    cond.addValueCondition(FLAGS_COLUMN(SeenFlags, rightColumn), Query::IsNot, 
QVariant());
+    cond.addValueCondition(FLAGS_COLUMN(IgnoredFlags, rightColumn), 
Query::IsNot, QVariant());
+
+    Query::Case caseStmt(cond, QStringLiteral("1"), QStringLiteral("0"));
+    qb.addAggregation(caseStmt, QStringLiteral("sum"));
+
+    // We need to join PimItemFlagRelation table twice - once for \SEEN flag 
and once
+    // for $IGNORED flag, otherwise entries from PimItemTable get duplicated 
when an
+    // item has both flags and the SUM(CASE ...) above returns bogus values
+    {
+        Query::Condition seenCondition(Query::And);
+        seenCondition.addColumnCondition(PimItem::idFullColumnName(), 
Query::Equals, FLAGS_COLUMN(SeenFlags, leftColumn));
+        seenCondition.addValueCondition(FLAGS_COLUMN(SeenFlags, rightColumn), 
Query::Equals,
+                                        
Flag::retrieveByName(QStringLiteral(AKONADI_FLAG_SEEN)).id());
+        qb.addJoin(QueryBuilder::LeftJoin,
+                   QStringLiteral("%1 AS 
%2").arg(PimItemFlagRelation::tableName(), SeenFlagsTableName),
+                   seenCondition);
+    }
+    {
+        Query::Condition ignoredCondition(Query::And);
+        ignoredCondition.addColumnCondition(PimItem::idFullColumnName(), 
Query::Equals, FLAGS_COLUMN(IgnoredFlags, leftColumn));
+        ignoredCondition.addValueCondition(FLAGS_COLUMN(IgnoredFlags, 
rightColumn), Query::Equals,
+                                           
Flag::retrieveByName(QStringLiteral(AKONADI_FLAG_IGNORED)).id());
+        qb.addJoin(QueryBuilder::LeftJoin,
+                   QStringLiteral("%1 AS 
%2").arg(PimItemFlagRelation::tableName(), IgnoredFlagsTableName),
+                   ignoredCondition);
+    }
+
+#undef FLAGS_COLUMN
 
-    qb.addJoin(QueryBuilder::LeftJoin, PimItemFlagRelation::tableName(),
-               PimItem::idFullColumnName(), 
PimItemFlagRelation::leftFullColumnName());
     if (col.isVirtual()) {
         qb.addJoin(QueryBuilder::InnerJoin, 
CollectionPimItemRelation::tableName(),
                    CollectionPimItemRelation::rightFullColumnName(), 
PimItem::idFullColumnName());


Reply via email to