aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/sqlite/sqlitebasestatement.cpp3
-rw-r--r--src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h9
-rw-r--r--src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h12
3 files changed, 11 insertions, 13 deletions
diff --git a/src/libs/sqlite/sqlitebasestatement.cpp b/src/libs/sqlite/sqlitebasestatement.cpp
index 91b417bea1..d9d677c395 100644
--- a/src/libs/sqlite/sqlitebasestatement.cpp
+++ b/src/libs/sqlite/sqlitebasestatement.cpp
@@ -274,6 +274,9 @@ void BaseStatement::bind(int index, ValueView value)
void BaseStatement::prepare(Utils::SmallStringView sqlStatement)
{
+ if (!m_database.isLocked())
+ throw DatabaseIsNotLocked{};
+
int resultCode;
do {
diff --git a/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h b/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h
index 37131012d6..c5c7b61160 100644
--- a/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h
+++ b/src/plugins/qmldesigner/designercore/imagecache/imagecachestorage.h
@@ -30,6 +30,7 @@ public:
: database(database)
{
transaction.commit();
+ database.walCheckpointFull();
}
ImageEntry fetchImage(Utils::SmallStringView name, Sqlite::TimeStamp minimumTimeStamp) const override
@@ -157,16 +158,10 @@ private:
Initializer(DatabaseType &database)
{
if (!database.isInitialized()) {
- Sqlite::ExclusiveTransaction transaction{database};
-
createImagesTable(database);
database.setVersion(1);
- transaction.commit();
-
database.setIsInitialized(true);
-
- database.walCheckpointFull();
} else if (database.version() < 1) {
updateTableToVersion1(database);
}
@@ -277,8 +272,8 @@ private:
public:
DatabaseType &database;
+ Sqlite::ExclusiveNonThrowingDestructorTransaction<DatabaseType> transaction{database};
Initializer initializer{database};
- Sqlite::ImmediateNonThrowingDestructorTransaction<DatabaseType> transaction{database};
mutable ReadStatement<1, 2> selectImageStatement{
"SELECT image FROM images WHERE name=?1 AND mtime >= ?2", database};
mutable ReadStatement<1, 2> selectMidSizeImageStatement{
diff --git a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h
index ae11e98f36..4288cd5cbb 100644
--- a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h
+++ b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h
@@ -38,8 +38,13 @@ public:
ProjectStorage(Database &database, bool isInitialized)
: database{database}
+ , exclusiveTransaction{database}
, initializer{database, isInitialized}
{
+ exclusiveTransaction.commit();
+
+ database.walCheckpointFull();
+
moduleCache.populate();
}
@@ -2242,8 +2247,6 @@ private:
Initializer(Database &database, bool isInitialized)
{
if (!isInitialized) {
- Sqlite::ExclusiveTransaction transaction{database};
-
auto moduleIdColumn = createModulesTable(database);
createSourceContextsTable(database);
createSourcesTable(database);
@@ -2257,10 +2260,6 @@ private:
createDocumentImportsTable(database, moduleIdColumn);
createFileStatusesTable(database);
createProjectDatasTable(database);
-
- transaction.commit();
-
- database.walCheckpointFull();
}
database.setIsInitialized(true);
}
@@ -2598,6 +2597,7 @@ private:
public:
Database &database;
+ Sqlite::ExclusiveNonThrowingDestructorTransaction<Database> exclusiveTransaction;
Initializer initializer;
mutable ModuleCache moduleCache{ModuleStorageAdapter{*this}};
Storage::Info::CommonTypeCache<ProjectStorageInterface> commonTypeCache_{*this};