diff options
| author | Michael Chan <mchan@android.com> | 2009-04-27 16:28:51 -0700 |
|---|---|---|
| committer | Michael Chan <mchan@android.com> | 2009-04-27 16:32:45 -0700 |
| commit | 99c4483cd77ff96c5181fda3d6e2fcf2ea50421b (patch) | |
| tree | 60fc580665a3ceac4c5353f1b59ec723bcc325a2 | |
| parent | 17f213bc528cf296e133e9ec9c9e0ce5dce41781 (diff) | |
| download | frameworks_base-99c4483cd77ff96c5181fda3d6e2fcf2ea50421b.zip frameworks_base-99c4483cd77ff96c5181fda3d6e2fcf2ea50421b.tar.gz frameworks_base-99c4483cd77ff96c5181fda3d6e2fcf2ea50421b.tar.bz2 | |
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"
| -rw-r--r-- | core/java/android/database/sqlite/SQLiteQueryBuilder.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/core/java/android/database/sqlite/SQLiteQueryBuilder.java b/core/java/android/database/sqlite/SQLiteQueryBuilder.java index 519a81c..ab7c827 100644 --- a/core/java/android/database/sqlite/SQLiteQueryBuilder.java +++ b/core/java/android/database/sqlite/SQLiteQueryBuilder.java @@ -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 { |
