Allow caller-supplied column aliases in queries even when a projection map is used.
Modified SQLiteQueryBuilder to allow caller-spplied column alias ("AS")
instead restricting to the keys of the supplied projection map. This is needed for
UNION queries where new columns may be created on the fly such as "1 AS flag"
This commit is contained in:
@@ -486,12 +486,20 @@ public class SQLiteQueryBuilder
|
||||
String userColumn = projectionIn[i];
|
||||
String column = mProjectionMap.get(userColumn);
|
||||
|
||||
if (column == null) {
|
||||
throw new IllegalArgumentException(
|
||||
"Invalid column " + projectionIn[i]);
|
||||
} else {
|
||||
if (column != null) {
|
||||
projection[i] = column;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (userColumn.contains(" AS ")
|
||||
|| userColumn.contains(" as ")) {
|
||||
/* A column alias already exist */
|
||||
projection[i] = userColumn;
|
||||
continue;
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException("Invalid column "
|
||||
+ projectionIn[i]);
|
||||
}
|
||||
return projection;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user