From 3c7c71cfa635c2eea88cf33326acb89c0056b957 Mon Sep 17 00:00:00 2001 From: Badlop Date: Wed, 28 Jun 2017 11:14:49 +0200 Subject: [PATCH] In offline export to SQL, first write all DELETE, later all INSERT (#1509) --- src/mod_offline_sql.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mod_offline_sql.erl b/src/mod_offline_sql.erl index bcf5b7aad..f43f4c929 100644 --- a/src/mod_offline_sql.erl +++ b/src/mod_offline_sql.erl @@ -181,6 +181,13 @@ count_messages(LUser, LServer) -> export(_Server) -> [{offline_msg, + fun(Host, #offline_msg{us = {LUser, LServer}}) + when LServer == Host -> + [?SQL("delete from spool where username=%(LUser)s;")]; + (_Host, _R) -> + [] + end}, + {offline_msg, fun(Host, #offline_msg{us = {LUser, LServer}, timestamp = TimeStamp, from = From, to = To, packet = El}) @@ -192,8 +199,7 @@ export(_Server) -> Packet1, jid:make(LServer), TimeStamp, <<"Offline Storage">>), XML = fxml:element_to_binary(xmpp:encode(Packet2)), - [?SQL("delete from spool where username=%(LUser)s;"), - ?SQL("insert into spool(username, xml) values (" + [?SQL("insert into spool(username, xml) values (" "%(LUser)s, %(XML)s);")] catch _:{xmpp_codec, Why} -> ?ERROR_MSG("failed to decode packet ~p of user ~s@~s: ~s",