Use the Query object rather than the SQLiteDatabase#query() method.

This ensures that all of the relevant joins are in place, so that when
the updater asks to `queryPackageName()` then it can assume that we have
already joined onto the `Schema.PackageTable`.
This commit is contained in:
Peter Serwylo 2016-10-25 22:15:33 +11:00
parent 354f0a9b53
commit 9785536910
2 changed files with 6 additions and 4 deletions

View File

@ -216,7 +216,7 @@ public class AppProvider extends FDroidProvider {
} }
private class Query extends QueryBuilder { protected class Query extends QueryBuilder {
private boolean isSuggestedApkTableAdded; private boolean isSuggestedApkTableAdded;
private boolean requiresInstalledTable; private boolean requiresInstalledTable;
@ -230,7 +230,7 @@ public class AppProvider extends FDroidProvider {
final String apk = getApkTableName(); final String apk = getApkTableName();
final String repo = RepoTable.NAME; final String repo = RepoTable.NAME;
final String cat = CategoryTable.NAME; final String cat = CategoryTable.NAME;
final String catJoin = CatJoinTable.NAME; final String catJoin = getCatJoinTableName();
return pkg + return pkg +
" JOIN " + app + " ON (" + app + "." + Cols.PACKAGE_ID + " = " + pkg + "." + PackageTable.Cols.ROW_ID + ") " + " JOIN " + app + " ON (" + app + "." + Cols.PACKAGE_ID + " = " + pkg + "." + PackageTable.Cols.ROW_ID + ") " +

View File

@ -175,8 +175,10 @@ public class TempAppProvider extends AppProvider {
} }
private void ensureCategories(String[] categories, String packageName, long repoId) { private void ensureCategories(String[] categories, String packageName, long repoId) {
QuerySelection forId = querySingle(packageName, repoId); Query query = new AppProvider.Query();
Cursor cursor = db().query(getTableName(), new String[] {Cols.ROW_ID}, forId.getSelection(), forId.getArgs(), null, null, null); query.addField(Cols.ROW_ID);
query.addSelection(querySingle(packageName, repoId));
Cursor cursor = db().rawQuery(query.toString(), query.getArgs());
cursor.moveToFirst(); cursor.moveToFirst();
long appMetadataId = cursor.getLong(0); long appMetadataId = cursor.getLong(0);
cursor.close(); cursor.close();