provider: add debug variable to explain query plans
This commit is contained in:
@@ -28,6 +28,7 @@ public final class Constants {
|
|||||||
|
|
||||||
public static final boolean DEBUG = BuildConfig.DEBUG;
|
public static final boolean DEBUG = BuildConfig.DEBUG;
|
||||||
public static final boolean DEBUG_LOG_DB_QUERIES = false;
|
public static final boolean DEBUG_LOG_DB_QUERIES = false;
|
||||||
|
public static final boolean DEBUG_EXPLAIN_QUERIES = false;
|
||||||
public static final boolean DEBUG_SYNC_REMOVE_CONTACTS = false;
|
public static final boolean DEBUG_SYNC_REMOVE_CONTACTS = false;
|
||||||
public static final boolean DEBUG_KEYSERVER_SYNC = false;
|
public static final boolean DEBUG_KEYSERVER_SYNC = false;
|
||||||
|
|
||||||
|
|||||||
@@ -719,14 +719,38 @@ public class KeychainProvider extends ContentProvider {
|
|||||||
cursor.setNotificationUri(getContext().getContentResolver(), uri);
|
cursor.setNotificationUri(getContext().getContentResolver(), uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log.d(Constants.TAG,
|
||||||
|
"Query: " + qb.buildQuery(projection, selection, null, null, orderBy, null));
|
||||||
|
|
||||||
if (Constants.DEBUG && Constants.DEBUG_LOG_DB_QUERIES) {
|
if (Constants.DEBUG && Constants.DEBUG_LOG_DB_QUERIES) {
|
||||||
Log.d(Constants.TAG,
|
|
||||||
"Query: "
|
|
||||||
+ qb.buildQuery(projection, selection, selectionArgs, null, null,
|
|
||||||
orderBy, null));
|
|
||||||
Log.d(Constants.TAG, "Cursor: " + DatabaseUtils.dumpCursorToString(cursor));
|
Log.d(Constants.TAG, "Cursor: " + DatabaseUtils.dumpCursorToString(cursor));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Constants.DEBUG && Constants.DEBUG_EXPLAIN_QUERIES) {
|
||||||
|
String rawQuery = qb.buildQuery(projection, selection, groupBy, having, orderBy, null);
|
||||||
|
Cursor explainCursor = db.rawQuery("EXPLAIN QUERY PLAN " + rawQuery, selectionArgs);
|
||||||
|
|
||||||
|
// this is a debugging feature, we can be a little careless
|
||||||
|
explainCursor.moveToFirst();
|
||||||
|
|
||||||
|
StringBuilder line = new StringBuilder();
|
||||||
|
for (int i = 0; i < explainCursor.getColumnCount(); i++) {
|
||||||
|
line.append(explainCursor.getColumnName(i)).append(", ");
|
||||||
|
}
|
||||||
|
Log.d(Constants.TAG, line.toString());
|
||||||
|
|
||||||
|
while (!explainCursor.isAfterLast()) {
|
||||||
|
line = new StringBuilder();
|
||||||
|
for (int i = 0; i < explainCursor.getColumnCount(); i++) {
|
||||||
|
line.append(explainCursor.getString(i)).append(", ");
|
||||||
|
}
|
||||||
|
Log.d(Constants.TAG, line.toString());
|
||||||
|
explainCursor.moveToNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
explainCursor.close();
|
||||||
|
}
|
||||||
|
|
||||||
return cursor;
|
return cursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user