diff --git a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java index 4c5c3b2f7..5ea9e1a6e 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java @@ -985,7 +985,7 @@ public class AppProvider extends FDroidProvider { " ( " + app + "." + Cols.IS_COMPATIBLE + " = 0 OR " + apk + "." + Cols.IS_COMPATIBLE + " = 1 ) ) " + " WHERE " + Cols.UPSTREAM_VERSION_CODE + " > 0 "; - db().execSQL(updateSql); + LoggingQuery.execSQL(db(), updateSql); } /** @@ -1015,7 +1015,7 @@ public class AppProvider extends FDroidProvider { " ( " + app + "." + Cols.IS_COMPATIBLE + " = 0 OR " + apk + "." + ApkTable.Cols.IS_COMPATIBLE + " = 1 ) ) " + " WHERE COALESCE(" + Cols.UPSTREAM_VERSION_CODE + ", 0) = 0 OR " + Cols.SUGGESTED_VERSION_CODE + " IS NULL "; - db().execSQL(updateSql); + LoggingQuery.execSQL(db(), updateSql); } /** diff --git a/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java b/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java index 9eb40417b..db6731307 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java +++ b/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java @@ -66,6 +66,20 @@ final class LoggingQuery { return db.rawQuery(query, queryArgs); } + private void execSQLInternal() { + if (BuildConfig.DEBUG) { + long startTime = System.currentTimeMillis(); + db.execSQL(query); + long queryDuration = System.currentTimeMillis() - startTime; + + if (queryDuration >= SLOW_QUERY_DURATION) { + logSlowQuery(queryDuration); + } + } else { + db.execSQL(query); + } + } + /** * Log the query and its duration to the console. In addition, execute an "EXPLAIN QUERY PLAN" * for the query in question so that the query can be diagnosed (https://sqlite.org/eqp.html) @@ -116,4 +130,8 @@ final class LoggingQuery { public static Cursor query(SQLiteDatabase db, String query, String[] queryBuilderArgs) { return new LoggingQuery(db, query, queryBuilderArgs).rawQuery(); } + + public static void execSQL(SQLiteDatabase db, String sql) { + new LoggingQuery(db, sql, null).execSQLInternal(); + } }