From a4f3786e01326ff4996c64b497ccbd5f4aba7a99 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 6 Sep 2023 10:29:16 +0200 Subject: [PATCH] disable counts for regex queries, it is performance killer sadly --- src/librssguard/services/abstract/search.cpp | 23 +++---------------- .../services/abstract/searchsnode.cpp | 21 ----------------- .../services/abstract/searchsnode.h | 1 - 3 files changed, 3 insertions(+), 42 deletions(-) diff --git a/src/librssguard/services/abstract/search.cpp b/src/librssguard/services/abstract/search.cpp index a97afa56c..a5141229b 100644 --- a/src/librssguard/services/abstract/search.cpp +++ b/src/librssguard/services/abstract/search.cpp @@ -84,27 +84,10 @@ bool Search::deleteViaGui() { } void Search::updateCounts(bool including_total_count) { - QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); - int account_id = getParentServiceRoot()->accountId(); + Q_UNUSED(including_total_count) - try { - auto ac = DatabaseQueries::getMessageCountsForProbe(database, this, account_id); - - if (including_total_count) { - setCountOfAllMessages(ac.m_total); - } - - setCountOfUnreadMessages(ac.m_unread); - } - catch (const ApplicationException& ex) { - qCriticalNN << LOGSEC_CORE << "Failed to get counts of probe:" << QUOTE_W_SPACE_DOT(ex.message()); - - if (including_total_count) { - setCountOfAllMessages(-1); - } - - setCountOfUnreadMessages(-1); - } + setCountOfAllMessages(-1); + setCountOfUnreadMessages(-1); } QList Search::undeletedMessages() const { diff --git a/src/librssguard/services/abstract/searchsnode.cpp b/src/librssguard/services/abstract/searchsnode.cpp index 4bd7fdbd9..5b40d0b43 100644 --- a/src/librssguard/services/abstract/searchsnode.cpp +++ b/src/librssguard/services/abstract/searchsnode.cpp @@ -60,27 +60,6 @@ QList SearchsNode::contextMenuFeedsList() { return QList{m_actProbeNew}; } -void SearchsNode::updateCounts(bool including_total_count) { - Q_UNUSED(including_total_count) - - // NOTE: We do not update all counts here because it is simply taking too much time. - // This is true when user has many regex queries added because SQLite (MariaDB) simply - // takes too long to finish SQL queries with REGEXPs. - // - // We only update one by one. - if (childCount() <= 10) { - RootItem::updateCounts(including_total_count); - } - else { - for (RootItem* child : qAsConst(childItems())) { - auto* sear = qobject_cast(child); - - sear->setCountOfAllMessages(-1); - sear->setCountOfUnreadMessages(-1); - } - } -} - void SearchsNode::createProbe() { FormAddEditProbe frm(qApp->mainFormWidget()); Search* new_prb = frm.execForAdd(); diff --git a/src/librssguard/services/abstract/searchsnode.h b/src/librssguard/services/abstract/searchsnode.h index 114c528d1..699821d33 100644 --- a/src/librssguard/services/abstract/searchsnode.h +++ b/src/librssguard/services/abstract/searchsnode.h @@ -18,7 +18,6 @@ class SearchsNode : public RootItem { virtual QList undeletedMessages() const; virtual QList contextMenuFeedsList(); - virtual void updateCounts(bool including_total_count); Search* probeById(const QString& custom_id);