From 0b7e5a8e219ff283ee2c205f0e2aafe6ae5e9d3f Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 20 Jan 2020 20:24:08 +0100 Subject: [PATCH] Set WAL checkpoint to 100 (experimental) --- app/src/main/java/eu/faircode/email/DB.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/DB.java b/app/src/main/java/eu/faircode/email/DB.java index c5f1e283fe..bf05358ed1 100644 --- a/app/src/main/java/eu/faircode/email/DB.java +++ b/app/src/main/java/eu/faircode/email/DB.java @@ -34,6 +34,7 @@ import javax.mail.Address; import javax.mail.internet.InternetAddress; import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory; +import io.requery.android.database.sqlite.SQLiteDatabase; /* This file is part of FairEmail. @@ -104,6 +105,24 @@ public abstract class DB extends RoomDatabase { Helper.getBackgroundExecutor(1, "query"); private static final String DB_NAME = "fairemail"; + private static final int DB_CHECKPOINT = 100; + + @Override + public void init(@NonNull DatabaseConfiguration configuration) { + // https://www.sqlite.org/pragma.html#pragma_wal_autocheckpoint + String dbpath = configuration.context.getDatabasePath(DB_NAME).getPath(); + if (new File(dbpath).exists()) { + try (SQLiteDatabase db = SQLiteDatabase.openDatabase(dbpath, null, SQLiteDatabase.OPEN_READWRITE)) { + + Log.i("DB checkpoint=" + DB_CHECKPOINT); + try (Cursor cursor = db.rawQuery("PRAGMA wal_autocheckpoint=" + DB_CHECKPOINT + ";", null)) { + cursor.moveToNext(); + } + } + } + + super.init(configuration); + } public static synchronized DB getInstance(Context context) { if (sInstance == null) {