From 018a64c27252f39542ac956f618a08bafb9663cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Andr=C3=A9n?= Date: Fri, 27 Aug 2021 13:07:55 +0200 Subject: [PATCH] Avoid a bit of work when not using tags #585 --- .../jdbc/journal/dao/JournalQueries.scala | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/src/main/scala/akka/persistence/jdbc/journal/dao/JournalQueries.scala b/core/src/main/scala/akka/persistence/jdbc/journal/dao/JournalQueries.scala index 4b70fc0b2..b52357e5f 100644 --- a/core/src/main/scala/akka/persistence/jdbc/journal/dao/JournalQueries.scala +++ b/core/src/main/scala/akka/persistence/jdbc/journal/dao/JournalQueries.scala @@ -19,18 +19,22 @@ class JournalQueries( import profile.api._ - val insertAndReturn = - JournalTable.returning(JournalTable.map(_.ordering)) + val insertAndReturn = JournalTable.returning(JournalTable.map(_.ordering)) private val TagTableC = Compiled(TagTable) def writeJournalRows(xs: Seq[(JournalAkkaSerializationRow, Set[String])])(implicit ec: ExecutionContext) = { val sorted = xs.sortBy((event => event._1.sequenceNumber)) val (events, tags) = sorted.unzip - for { - ids <- insertAndReturn ++= events - tagInserts = ids.zip(tags).flatMap { case (id, tags) => tags.map(tag => TagRow(id, tag)) } - _ <- TagTableC ++= tagInserts - } yield () + if (tags.nonEmpty) { + for { + ids <- insertAndReturn ++= events + tagInserts = ids.zip(tags).flatMap { case (id, tags) => tags.map(tag => TagRow(id, tag)) } + _ <- TagTableC ++= tagInserts + } yield () + } else { + // optimization avoid some work when not using tags + insertAndReturn ++= events + } } private def selectAllJournalForPersistenceIdDesc(persistenceId: Rep[String]) =