diff options
Diffstat (limited to 'src')
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}; |