From 39456d8135ca06a25250100fcbd71281374f79aa Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Mon, 1 Apr 2013 16:20:06 +0200 Subject: [PATCH] avoid re-running a setQuery that already failed --- src/query/docseqdb.cpp | 11 +++++++---- src/query/docseqdb.h | 2 +- src/rcldb/searchdata.cpp | 3 ++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/query/docseqdb.cpp b/src/query/docseqdb.cpp index ddd8f3ea..518837b9 100644 --- a/src/query/docseqdb.cpp +++ b/src/query/docseqdb.cpp @@ -34,7 +34,8 @@ DocSequenceDb::DocSequenceDb(RefCntr q, const string &t, m_queryReplaceAbstract(false), m_isFiltered(false), m_isSorted(false), - m_needSetQuery(false) + m_needSetQuery(false), + m_lastSQStatus(true) { } @@ -227,12 +228,14 @@ bool DocSequenceDb::setQuery() { if (!m_needSetQuery) return true; + + m_needSetQuery = false; m_rescnt = -1; - m_needSetQuery = !m_q->setQuery(m_fsdata); - if (m_needSetQuery) { + m_lastSQStatus = m_q->setQuery(m_fsdata); + if (!m_lastSQStatus) { m_reason = m_q->getReason(); LOGERR(("DocSequenceDb::setQuery: rclquery::setQuery failed: %s\n", m_reason.c_str())); } - return !m_needSetQuery; + return m_lastSQStatus; } diff --git a/src/query/docseqdb.h b/src/query/docseqdb.h index a987f9ff..e8c1a42c 100644 --- a/src/query/docseqdb.h +++ b/src/query/docseqdb.h @@ -67,7 +67,7 @@ class DocSequenceDb : public DocSequence { bool m_isFiltered; bool m_isSorted; bool m_needSetQuery; // search data changed, need to reapply before fetch - + bool m_lastSQStatus; bool setQuery(); }; diff --git a/src/rcldb/searchdata.cpp b/src/rcldb/searchdata.cpp index 18c084b4..f7e854d7 100644 --- a/src/rcldb/searchdata.cpp +++ b/src/rcldb/searchdata.cpp @@ -109,7 +109,8 @@ static const char *maxXapClauseMsg = "Maximum Xapian query size exceeded. Increase maxXapianClauses " "in the configuration. "; static const char *maxXapClauseCaseDiacMsg = - "Or try to use case (C) or diacritics (D) sensitivity qualifiers." + "Or try to use case (C) or diacritics (D) sensitivity qualifiers, or less " + "wildcards ?" ; bool SearchData::clausesToQuery(Rcl::Db &db, SClType tp,