From faad5f9464a91795dc85fa8c9000b53422015b29 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 19 Jun 2015 06:57:24 +0200 Subject: [PATCH] Fixed some bugs in DB cleaning. --- resources/text/CHANGELOG | 1 + src/gui/formdatabasecleanup.cpp | 3 ++- src/miscellaneous/databasefactory.cpp | 16 ++++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG index 4c2acde2e..e0d0f52a3 100644 --- a/resources/text/CHANGELOG +++ b/resources/text/CHANGELOG @@ -8,6 +8,7 @@ Added: Fixed: diff --git a/src/gui/formdatabasecleanup.cpp b/src/gui/formdatabasecleanup.cpp index 1dab00d42..0a1998eb3 100755 --- a/src/gui/formdatabasecleanup.cpp +++ b/src/gui/formdatabasecleanup.cpp @@ -129,6 +129,7 @@ void FormDatabaseCleanup::loadDatabaseInfo() { } m_ui->m_txtDatabaseType->setText(qApp->database()->humanDriverName(qApp->database()->activeDatabaseDriver())); - m_ui->m_checkShrink->setEnabled(qApp->database()->activeDatabaseDriver() == DatabaseFactory::SQLITE); + m_ui->m_checkShrink->setEnabled(qApp->database()->activeDatabaseDriver() == DatabaseFactory::SQLITE || + qApp->database()->activeDatabaseDriver() == DatabaseFactory::SQLITE_MEMORY); m_ui->m_checkShrink->setChecked(m_ui->m_checkShrink->isEnabled()); } diff --git a/src/miscellaneous/databasefactory.cpp b/src/miscellaneous/databasefactory.cpp index eaab76d7c..a6ebec1d3 100755 --- a/src/miscellaneous/databasefactory.cpp +++ b/src/miscellaneous/databasefactory.cpp @@ -704,8 +704,20 @@ QSqlDatabase DatabaseFactory::sqliteConnection(const QString &connection_name, D } } -bool DatabaseFactory::sqliteVacuumDatabase() { - QSqlDatabase database = sqliteConnection(objectName(), FromSettings); +bool DatabaseFactory::sqliteVacuumDatabase() { + QSqlDatabase database; + + if (m_activeDatabaseDriver == SQLITE) { + database = sqliteConnection(objectName(), StrictlyFileBased); + } + else if (m_activeDatabaseDriver == SQLITE_MEMORY) { + sqliteSaveMemoryDatabase(); + database = sqliteConnection(objectName(), StrictlyFileBased); + } + else { + return false; + } + QSqlQuery query_vacuum(database); return query_vacuum.exec("VACUUM");