avoid re-running a setQuery that already failed

This commit is contained in:
Jean-Francois Dockes 2013-04-01 16:20:06 +02:00
parent 426481e3af
commit 39456d8135
3 changed files with 10 additions and 6 deletions

View File

@ -34,7 +34,8 @@ DocSequenceDb::DocSequenceDb(RefCntr<Rcl::Query> q, const string &t,
m_queryReplaceAbstract(false), m_queryReplaceAbstract(false),
m_isFiltered(false), m_isFiltered(false),
m_isSorted(false), m_isSorted(false),
m_needSetQuery(false) m_needSetQuery(false),
m_lastSQStatus(true)
{ {
} }
@ -227,12 +228,14 @@ bool DocSequenceDb::setQuery()
{ {
if (!m_needSetQuery) if (!m_needSetQuery)
return true; return true;
m_needSetQuery = false;
m_rescnt = -1; m_rescnt = -1;
m_needSetQuery = !m_q->setQuery(m_fsdata); m_lastSQStatus = m_q->setQuery(m_fsdata);
if (m_needSetQuery) { if (!m_lastSQStatus) {
m_reason = m_q->getReason(); m_reason = m_q->getReason();
LOGERR(("DocSequenceDb::setQuery: rclquery::setQuery failed: %s\n", LOGERR(("DocSequenceDb::setQuery: rclquery::setQuery failed: %s\n",
m_reason.c_str())); m_reason.c_str()));
} }
return !m_needSetQuery; return m_lastSQStatus;
} }

View File

@ -67,7 +67,7 @@ class DocSequenceDb : public DocSequence {
bool m_isFiltered; bool m_isFiltered;
bool m_isSorted; bool m_isSorted;
bool m_needSetQuery; // search data changed, need to reapply before fetch bool m_needSetQuery; // search data changed, need to reapply before fetch
bool m_lastSQStatus;
bool setQuery(); bool setQuery();
}; };

View File

@ -109,7 +109,8 @@ static const char *maxXapClauseMsg =
"Maximum Xapian query size exceeded. Increase maxXapianClauses " "Maximum Xapian query size exceeded. Increase maxXapianClauses "
"in the configuration. "; "in the configuration. ";
static const char *maxXapClauseCaseDiacMsg = 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, bool SearchData::clausesToQuery(Rcl::Db &db, SClType tp,