sql: only join content table if necessary
This commit is contained in:
parent
46f51b9554
commit
802609da12
@ -133,7 +133,17 @@ void SearchWorker::search(const QString &query)
|
|||||||
QSqlQuery dbquery(db);
|
QSqlQuery dbquery(db);
|
||||||
QVector<SearchResult> results;
|
QVector<SearchResult> results;
|
||||||
QString whereSql = makeSql(tokenize(query));
|
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.prepare(prep);
|
||||||
dbquery.exec();
|
dbquery.exec();
|
||||||
qDebug() << "prepped: " << prep;
|
qDebug() << "prepped: " << prep;
|
||||||
|
Loading…
Reference in New Issue
Block a user