Merge pull request #126 from mamarley/insertuserracefix
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 May 2015 08:11:49 +0000 (10:11 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 May 2015 08:11:49 +0000 (10:11 +0200)
Fix SQL errors caused by sender insertion from multiple threads

src/core/postgresqlstorage.cpp

index 68cf254..e7a71e7 100644 (file)
@@ -1381,8 +1381,7 @@ bool PostgreSqlStorage::logMessage(Message &msg)
 
         if (addSenderQuery.lastError().isValid()) {
             rollbackSavePoint("sender_sp1", db);
-            getSenderIdQuery.prepare(getSenderIdQuery.lastQuery());
-            safeExec(getSenderIdQuery);
+            getSenderIdQuery = executePreparedQuery("select_senderid", msg.sender(), db);
             watchQuery(getSenderIdQuery);
             getSenderIdQuery.first();
             senderId = getSenderIdQuery.value(0).toInt();
@@ -1452,8 +1451,7 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs)
             if (addSenderQuery.lastError().isValid()) {
                 // seems it was inserted meanwhile... by a different thread
                 rollbackSavePoint("sender_sp", db);
-                selectSenderQuery.prepare(selectSenderQuery.lastQuery());
-                safeExec(selectSenderQuery);
+                selectSenderQuery = executePreparedQuery("select_senderid", sender, db);
                 watchQuery(selectSenderQuery);
                 selectSenderQuery.first();
                 senderIdList << selectSenderQuery.value(0).toInt();