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 requiresInstalledTable;
@ -230,7 +230,7 @@ public class AppProvider extends FDroidProvider {
final String apk = getApkTableName();
final String repo = RepoTable.NAME;
final String cat = CategoryTable.NAME;
final String catJoin = CatJoinTable.NAME;
final String catJoin = getCatJoinTableName();
return pkg +
" 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) {
QuerySelection forId = querySingle(packageName, repoId);
Cursor cursor = db().query(getTableName(), new String[] {Cols.ROW_ID}, forId.getSelection(), forId.getArgs(), null, null, null);
Query query = new AppProvider.Query();
query.addField(Cols.ROW_ID);
query.addSelection(querySingle(packageName, repoId));
Cursor cursor = db().rawQuery(query.toString(), query.getArgs());
cursor.moveToFirst();
long appMetadataId = cursor.getLong(0);
cursor.close();