From 802609da12a5391fc59bc0af25a47902394604c7 Mon Sep 17 00:00:00 2001 From: Albert S Date: Sun, 2 Sep 2018 12:45:28 +0200 Subject: [PATCH] sql: only join content table if necessary --- gui/searchworker.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gui/searchworker.cpp b/gui/searchworker.cpp index 6a503ff..c963d45 100644 --- a/gui/searchworker.cpp +++ b/gui/searchworker.cpp @@ -133,7 +133,17 @@ void SearchWorker::search(const QString &query) QSqlQuery dbquery(db); QVector results; QString whereSql = makeSql(tokenize(query)); - QString prep = "SELECT file.path AS path, content.page AS page, file.mtime AS mtime FROM file INNER JOIN content ON file.id = content.fileid INNER JOIN content_fts ON content.id = content_fts.ROWID WHERE 1=1 AND " + whereSql + " ORDER By file.mtime DESC, content.page ASC"; + + QString prep; + //TODO: hack, as we don't wanna look into content and get redundant results, when we don't even care about content + if(whereSql.contains("content.")) + { + prep = "SELECT file.path AS path, content.page AS page, file.mtime AS mtime FROM file INNER JOIN content ON file.id = content.fileid INNER JOIN content_fts ON content.id = content_fts.ROWID WHERE 1=1 AND " + whereSql + " ORDER By file.mtime DESC, content.page ASC"; + } + else + { + prep = "SELECT file.path AS path, 0 as page, file.mtime AS mtime FROM file WHERE " + whereSql + " ORDER by file.mtime DESC"; + } dbquery.prepare(prep); dbquery.exec(); qDebug() << "prepped: " << prep;