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:
Michael Chan
2009-04-27 16:28:51 -07:00
parent 17f213bc52
commit 99c4483cd7

View File

@@ -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 {