From 951d84f40461ca761b6569089127e5bcf3bcaa8e Mon Sep 17 00:00:00 2001 From: Alexei Sorokin Date: Sun, 19 Sep 2021 20:35:27 +0300 Subject: [PATCH] make sure messages_index is always cleaned up fully. fixes #4170 --- .../conversations/persistance/DatabaseBackend.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java index f1cf78760..de9bc0d2c 100644 --- a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java @@ -535,9 +535,6 @@ public class DatabaseBackend extends SQLiteOpenHelper { db.execSQL(CREATE_RESOLVER_RESULTS_TABLE); } - if (oldVersion < 42 && newVersion >= 42) { - db.execSQL("DROP TRIGGER IF EXISTS after_message_delete"); - } if (QuickConversationsService.isQuicksy() && oldVersion < 43 && newVersion >= 43) { List accounts = getAccounts(db); for (Account account : accounts) { @@ -576,14 +573,21 @@ public class DatabaseBackend extends SQLiteOpenHelper { db.beginTransaction(); db.execSQL("DROP TRIGGER IF EXISTS after_message_insert;"); db.execSQL("DROP TRIGGER IF EXISTS after_message_update;"); + db.execSQL("DROP TRIGGER IF EXISTS after_message_delete;"); db.execSQL("DROP TABLE IF EXISTS messages_index;"); + // a hack that should not be necessary, but + // there was at least one occurence when SQLite failed at this + db.execSQL("DROP TABLE IF EXISTS messages_index_docsize;"); + db.execSQL("DROP TABLE IF EXISTS messages_index_segdir;"); + db.execSQL("DROP TABLE IF EXISTS messages_index_segments;"); + db.execSQL("DROP TABLE IF EXISTS messages_index_stat;"); db.execSQL(CREATE_MESSAGE_INDEX_TABLE); db.execSQL(CREATE_MESSAGE_INSERT_TRIGGER); db.execSQL(CREATE_MESSAGE_UPDATE_TRIGGER); db.execSQL(CREATE_MESSAGE_DELETE_TRIGGER); - requiresMessageIndexRebuild = true; db.setTransactionSuccessful(); db.endTransaction(); + requiresMessageIndexRebuild = true; } }