diff options
Diffstat (limited to 'src/ingestor.cpp')
| -rw-r--r-- | src/ingestor.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/ingestor.cpp b/src/ingestor.cpp index 04dd378..33af8cf 100644 --- a/src/ingestor.cpp +++ b/src/ingestor.cpp @@ -299,9 +299,12 @@ namespace WebStat { auto valuesEntities = entities(values); fillKnownEntities(valuesEntities); try { - DB::TransactionScope dbtx {*dbconn}; - storeNewEntities(dbconn, valuesEntities); - existingEntities.insert_range(valuesEntities | entityIds); + std::optional<DB::TransactionScope> lineTx; + if (!std::ranges::all_of(valuesEntities, &std::optional<EntityId>::has_value, &Entity::id)) { + lineTx.emplace(*dbconn); + storeNewEntities(dbconn, valuesEntities); + existingEntities.insert_range(valuesEntities | entityIds); + } storeLogLine(dbconn, values); } catch (const DB::Error & originalError) { |
