forked from qt-creator/qt-creator
ClangRefactoring: Initialize sqlite database only once
Initializing the database is not cheap so it is better to initializing it only once. We simply check if the database file already exists and then skip the initializing step. Task-number: QTCREATORBUG-21174 Change-Id: I151090c5081c009f7913a30517065be2833791d8 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -29,6 +29,8 @@
|
||||
#include "sqlitetransaction.h"
|
||||
#include "sqlitereadwritestatement.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
|
||||
#include <chrono>
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
@@ -85,6 +87,7 @@ void Database::open()
|
||||
|
||||
void Database::open(Utils::PathString &&databaseFilePath)
|
||||
{
|
||||
m_isInitialized = QFileInfo::exists(QString(databaseFilePath));
|
||||
setDatabaseFilePath(std::move(databaseFilePath));
|
||||
open();
|
||||
}
|
||||
@@ -96,6 +99,16 @@ void Database::close()
|
||||
m_databaseBackend.close();
|
||||
}
|
||||
|
||||
bool Database::isInitialized() const
|
||||
{
|
||||
return m_isInitialized;
|
||||
}
|
||||
|
||||
void Database::setIsInitialized(bool isInitialized)
|
||||
{
|
||||
m_isInitialized = isInitialized;
|
||||
}
|
||||
|
||||
bool Database::isOpen() const
|
||||
{
|
||||
return m_isOpen;
|
||||
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
|
||||
Database();
|
||||
Database(Utils::PathString &&databaseFilePath,
|
||||
JournalMode journalMode=JournalMode::Wal);
|
||||
JournalMode journalMode);
|
||||
Database(Utils::PathString &&databaseFilePath,
|
||||
std::chrono::milliseconds busyTimeout = 1000ms,
|
||||
JournalMode journalMode=JournalMode::Wal);
|
||||
@@ -69,6 +69,9 @@ public:
|
||||
void open(Utils::PathString &&databaseFilePath);
|
||||
void close();
|
||||
|
||||
bool isInitialized() const;
|
||||
void setIsInitialized(bool isInitialized);
|
||||
|
||||
bool isOpen() const;
|
||||
|
||||
Table &addTable();
|
||||
@@ -133,6 +136,7 @@ private:
|
||||
JournalMode m_journalMode = JournalMode::Wal;
|
||||
OpenMode m_openMode = OpenMode::ReadWrite;
|
||||
bool m_isOpen = false;
|
||||
bool m_isInitialized = false;
|
||||
};
|
||||
|
||||
} // namespace Sqlite
|
||||
|
||||
Reference in New Issue
Block a user