From a6d31ff1d8703eae9375b7ec1cd01b323d7e8e6e Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Wed, 15 Apr 2026 13:57:25 +0100 Subject: Save point only if there are new entities Line insert is only a single operation with no new entities. --- src/ingestor.cpp | 9 ++++++--- 1 file 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 lineTx; + if (!std::ranges::all_of(valuesEntities, &std::optional::has_value, &Entity::id)) { + lineTx.emplace(*dbconn); + storeNewEntities(dbconn, valuesEntities); + existingEntities.insert_range(valuesEntities | entityIds); + } storeLogLine(dbconn, values); } catch (const DB::Error & originalError) { -- cgit v1.3