forked from qt-creator/qt-creator
Sqlite: Open Sqlite by default in exclusive locking mode
There are no extra files for the WAL in the excusive locking mode and it can be even faster because the logging is happening on the heap. Change-Id: I59d75dd2aa95d802ba67c8534a5cd8ab32a343df Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -60,20 +60,21 @@ Database::Database()
|
||||
{
|
||||
}
|
||||
|
||||
Database::Database(Utils::PathString &&databaseFilePath, JournalMode journalMode)
|
||||
: Database{std::move(databaseFilePath), 0ms, journalMode}
|
||||
Database::Database(Utils::PathString databaseFilePath, JournalMode journalMode, LockingMode lockingMode)
|
||||
: Database{std::move(databaseFilePath), 0ms, journalMode, lockingMode}
|
||||
{}
|
||||
|
||||
Database::Database(Utils::PathString &&databaseFilePath,
|
||||
Database::Database(Utils::PathString databaseFilePath,
|
||||
std::chrono::milliseconds busyTimeout,
|
||||
JournalMode journalMode)
|
||||
JournalMode journalMode,
|
||||
LockingMode lockingMode)
|
||||
: m_databaseBackend(*this)
|
||||
, m_busyTimeout(busyTimeout)
|
||||
{
|
||||
std::lock_guard lock{*this};
|
||||
|
||||
setJournalMode(journalMode);
|
||||
open(std::move(databaseFilePath));
|
||||
open(std::move(databaseFilePath), lockingMode);
|
||||
|
||||
#ifndef QT_NO_DEBUG
|
||||
execute("PRAGMA reverse_unordered_selects=1");
|
||||
@@ -87,9 +88,10 @@ void Database::activateLogging()
|
||||
DatabaseBackend::activateLogging();
|
||||
}
|
||||
|
||||
void Database::open()
|
||||
void Database::open(LockingMode lockingMode)
|
||||
{
|
||||
m_databaseBackend.open(m_databaseFilePath, m_openMode);
|
||||
m_databaseBackend.setLockingMode(lockingMode);
|
||||
m_databaseBackend.setJournalMode(m_journalMode);
|
||||
if (m_busyTimeout > 0ms)
|
||||
m_databaseBackend.setBusyTimeout(m_busyTimeout);
|
||||
@@ -99,11 +101,11 @@ void Database::open()
|
||||
m_isOpen = true;
|
||||
}
|
||||
|
||||
void Database::open(Utils::PathString &&databaseFilePath)
|
||||
void Database::open(Utils::PathString &&databaseFilePath, LockingMode lockingMode)
|
||||
{
|
||||
m_isInitialized = QFileInfo::exists(QString(databaseFilePath));
|
||||
setDatabaseFilePath(std::move(databaseFilePath));
|
||||
open();
|
||||
open(lockingMode);
|
||||
}
|
||||
|
||||
void Database::close()
|
||||
@@ -128,7 +130,7 @@ bool Database::isOpen() const
|
||||
return m_isOpen;
|
||||
}
|
||||
|
||||
void Database::setDatabaseFilePath(Utils::PathString &&databaseFilePath)
|
||||
void Database::setDatabaseFilePath(Utils::PathString databaseFilePath)
|
||||
{
|
||||
m_databaseFilePath = std::move(databaseFilePath);
|
||||
}
|
||||
@@ -163,6 +165,11 @@ JournalMode Database::journalMode() const
|
||||
return m_journalMode;
|
||||
}
|
||||
|
||||
LockingMode Database::lockingMode() const
|
||||
{
|
||||
return m_databaseBackend.lockingMode();
|
||||
}
|
||||
|
||||
void Database::setOpenMode(OpenMode openMode)
|
||||
{
|
||||
m_openMode = openMode;
|
||||
|
Reference in New Issue
Block a user