From 9e3a701cb0d84f1314c51dd52b8cd2c311d8b873 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sat, 22 Jun 2019 15:38:54 +0200 Subject: performance improvement of message expiry --- .../messenger/persistance/DatabaseBackend.java | 48 ++++++++++++++++++++-- .../messenger/services/XmppConnectionService.java | 12 ++++-- .../de/pixart/messenger/xmpp/XmppConnection.java | 4 +- 3 files changed, 56 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java index bef367b0a..243db470a 100644 --- a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java +++ b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java @@ -28,11 +28,14 @@ import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.UUID; @@ -1052,16 +1055,55 @@ public class DatabaseBackend extends SQLiteOpenHelper { Log.d(Config.LOGTAG, "deleted " + num + " messages for " + conversation.getJid().asBareJid() + " in " + (SystemClock.elapsedRealtime() - start) + "ms"); } - public void expireOldMessages(long timestamp) { + public long countExpireOldMessages(long timestamp) { long start = SystemClock.elapsedRealtime(); final String[] args = {String.valueOf(timestamp)}; SQLiteDatabase db = this.getReadableDatabase(); db.beginTransaction(); - db.delete("messages_index", "uuid in (select uuid from messages where timeSent= 1) { + final String[] args = {String.valueOf(timestamp)}; + SQLiteDatabase db = this.getReadableDatabase(); + db.beginTransaction(); + db.delete("messages_index", "uuid in (select uuid from messages where timeSent