From fba2ab98708013709ab927641c9ddd2d5ef101cb Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 9 Mar 2022 18:28:57 +0100 Subject: [PATCH] Enable DB optimize --- .../eu/faircode/email/FragmentOptionsMisc.java | 12 +++++++++++- .../java/eu/faircode/email/WorkerCleanup.java | 5 +++-- .../main/res/layout/fragment_options_misc.xml | 16 +++++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index fdd306be39..5bfec45740 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -140,6 +140,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private ImageButton ibRoom; private SwitchCompat swWal; private SwitchCompat swCheckpoints; + private SwitchCompat swAnalyze; private TextView tvSqliteCache; private SeekBar sbSqliteCache; private TextView tvChunkSize; @@ -196,7 +197,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc "experiments", "crash_reports", "cleanup_attachments", "protocol", "debug", "log_level", "test1", "test2", "test3", "test4", "test5", "work_manager", // "external_storage", - "query_threads", "wal", "checkpoints", "sqlite_cache", + "query_threads", "wal", "checkpoints", "sqlite_analyze", "sqlite_cache", "chunk_size", "undo_manager", "webview_legacy", "use_modseq", "uid_command", "perform_expunge", "uid_expunge", "auth_plain", "auth_login", "auth_ntlm", "auth_sasl", "auth_apop", @@ -294,6 +295,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc ibRoom = view.findViewById(R.id.ibRoom); swWal = view.findViewById(R.id.swWal); swCheckpoints = view.findViewById(R.id.swCheckpoints); + swAnalyze = view.findViewById(R.id.swAnalyze); tvSqliteCache = view.findViewById(R.id.tvSqliteCache); sbSqliteCache = view.findViewById(R.id.sbSqliteCache); ibSqliteCache = view.findViewById(R.id.ibSqliteCache); @@ -883,6 +885,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + swAnalyze.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("sqlite_analyze", checked).apply(); + } + }); + sbSqliteCache.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { @@ -1594,6 +1603,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc swWal.setChecked(prefs.getBoolean("wal", true)); swCheckpoints.setChecked(prefs.getBoolean("checkpoints", true)); + swAnalyze.setChecked(prefs.getBoolean("sqlite_analyze", true)); int sqlite_cache = prefs.getInt("sqlite_cache", DB.DEFAULT_CACHE_SIZE); Integer cache_size = DB.getCacheSizeKb(getContext()); diff --git a/app/src/main/java/eu/faircode/email/WorkerCleanup.java b/app/src/main/java/eu/faircode/email/WorkerCleanup.java index 1f5da40ba6..43d37a447c 100644 --- a/app/src/main/java/eu/faircode/email/WorkerCleanup.java +++ b/app/src/main/java/eu/faircode/email/WorkerCleanup.java @@ -97,6 +97,7 @@ public class WorkerCleanup extends Worker { boolean cleanup_attachments = prefs.getBoolean("cleanup_attachments", false); boolean download_headers = prefs.getBoolean("download_headers", false); boolean download_eml = prefs.getBoolean("download_eml", false); + boolean sqlite_analyze = prefs.getBoolean("sqlite_analyze", true); long start = new Date().getTime(); DB db = DB.getInstance(context); @@ -339,9 +340,9 @@ public class WorkerCleanup extends Worker { db.endTransaction(); } - if (BuildConfig.DEBUG) { + if (sqlite_analyze) { // https://sqlite.org/lang_analyze.html - Log.i("Analyze"); + Log.i("Running analyze"); long analyze = new Date().getTime(); try (Cursor cursor = db.getOpenHelper().getWritableDatabase().query("PRAGMA analysis_limit=1000; PRAGMA optimize;")) { cursor.moveToNext(); diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index c1bca120ff..930215c38d 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -779,6 +779,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="12dp" + android:checked="true" android:text="@string/title_advanced_wal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -790,12 +791,25 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="12dp" + android:checked="true" android:text="@string/title_advanced_checkpoints" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/swWal" app:switchPadding="12dp" /> + + + app:layout_constraintTop_toBottomOf="@id/swAnalyze" /> ROOM query threads: %1$s WAL Checkpoints + Analyze Sqlite cache: %1$s %% - %2$s Chunk size: %1$d Use Android\'s undo manager