summaryrefslogtreecommitdiffstats
path: root/src/library
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2020-12-18 19:34:10 +0100
committerUwe Klotz <uklotz@mixxx.org>2020-12-18 19:50:01 +0100
commit6255bb1f40e5887ea268c68cb3c5a533bde816ca (patch)
tree08071828863a7bfa901a6c331b6f5170f96ebd37 /src/library
parent043b38cb2080755302295ff1788376502752e27e (diff)
Execute database cleanup before library scan
https://bugs.launchpad.net/mixxx/+bug/1855783
Diffstat (limited to 'src/library')
-rw-r--r--src/library/dao/dao.h4
-rw-r--r--src/library/scanner/libraryscanner.cpp56
2 files changed, 32 insertions, 28 deletions
diff --git a/src/library/dao/dao.h b/src/library/dao/dao.h
index 837cc939ef..13bfe53206 100644
--- a/src/library/dao/dao.h
+++ b/src/library/dao/dao.h
@@ -13,6 +13,10 @@ class DAO {
m_database = database;
}
+ const QSqlDatabase& database() const {
+ return m_database;
+ }
+
protected:
QSqlDatabase m_database;
};
diff --git a/src/library/scanner/libraryscanner.cpp b/src/library/scanner/libraryscanner.cpp
index 5aa3e2858e..4e63cae6d5 100644
--- a/src/library/scanner/libraryscanner.cpp
+++ b/src/library/scanner/libraryscanner.cpp
@@ -113,34 +113,6 @@ void LibraryScanner::run() {
return;
}
- // Clean up the database and fix inconsistencies from previous runs.
- // See also: https://bugs.launchpad.net/mixxx/+bug/1846945
- {
- kLogger.info()
- << "Cleaning up database...";
- PerformanceTimer timer;
- timer.start();
- const auto sqlStmt = QStringLiteral(
- "DELETE FROM LibraryHashes WHERE hash <> :unequalHash "
- "AND directory_path NOT IN "
- "(SELECT directory FROM track_locations)");
- FwdSqlQuery query(dbConnection, sqlStmt);
- query.bindValue(
- QStringLiteral(":unequalHash"),
- static_cast<mixxx::cache_key_signed_t>(mixxx::invalidCacheKey()));
- auto numRows = execCleanupQuery(query);
- if (numRows < 0) {
- kLogger.warning()
- << "Failed to delete orphaned directory hashes";
- } else if (numRows > 0) {
- kLogger.info()
- << "Deleted" << numRows << "orphaned directory hashes)";
- }
- kLogger.info()
- << "Finished database cleanup:"
- << timer.elapsed().debugMillisWithUnit();
- }
-
m_libraryHashDao.initialize(dbConnection);
m_cueDao.initialize(dbConnection);
m_trackDao.initialize(dbConnection);
@@ -160,6 +132,34 @@ void LibraryScanner::slotStartScan() {
kLogger.debug() << "slotStartScan()";
DEBUG_ASSERT(m_state == STARTING);
+ // Clean up the database and fix inconsistencies from previous runs.
+ // See also: https://bugs.launchpad.net/mixxx/+bug/1846945
+ {
+ kLogger.info()
+ << "Cleaning up database before scanning...";
+ PerformanceTimer timer;
+ timer.start();
+ const auto sqlStmt = QStringLiteral(
+ "DELETE FROM LibraryHashes WHERE hash <> :unequalHash "
+ "AND directory_path NOT IN "
+ "(SELECT directory FROM track_locations)");
+ FwdSqlQuery query(m_libraryHashDao.database(), sqlStmt);
+ query.bindValue(
+ QStringLiteral(":unequalHash"),
+ static_cast<mixxx::cache_key_signed_t>(mixxx::invalidCacheKey()));
+ auto numRows = execCleanupQuery(query);
+ if (numRows < 0) {
+ kLogger.warning()
+ << "Failed to delete orphaned directory hashes";
+ } else if (numRows > 0) {
+ kLogger.info()
+ << "Deleted" << numRows << "orphaned directory hashes)";
+ }
+ kLogger.info()
+ << "Finished database cleanup:"
+ << timer.elapsed().debugMillisWithUnit();
+ }
+
// Recursively scan each directory in the directories table.
m_libraryRootDirs = m_directoryDao.getDirs();
// If there are no directories then we have nothing to do. Cleanup and