summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ingestor.cpp9
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) {