diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h index 00bb429dba..f75d83b572 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h @@ -68,7 +68,18 @@ public: FilePathIds fetchPchSources(ProjectPartId projectPartId) const override { - return fetchPchSourcesStatement.template values<FilePathId>(1024, projectPartId.projectPathId); + try { + Sqlite::DeferredTransaction transaction{database}; + + FilePathIds values = fetchPchSourcesStatement + .template values<FilePathId>(1024, projectPartId.projectPathId); + + transaction.commit(); + + return values; + } catch (const Sqlite::StatementIsBusy &) { + return fetchPchSources(projectPartId); + } } FilePathIds fetchSources(ProjectPartId projectPartId) const override |