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:
parent
354f0a9b53
commit
9785536910
@ -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 + ") " +
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user