From ae6cdd12ac7ded629971206efde331361604d442 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Sun, 14 Mar 2010 11:38:06 -0700 Subject: [PATCH] Allocate SQLiteQueryBuilder's WHERE clause StringBuilder lazily. Number of callers weren't using this, and seemed like a waste to allocate it when unnecessary. Change-Id: Iebb701a9eb4f1d9d028bfe74463574f84a36729c --- .../android/database/sqlite/SQLiteQueryBuilder.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/java/android/database/sqlite/SQLiteQueryBuilder.java b/core/java/android/database/sqlite/SQLiteQueryBuilder.java index af54a71169ab0..1d154ce5b3c08 100644 --- a/core/java/android/database/sqlite/SQLiteQueryBuilder.java +++ b/core/java/android/database/sqlite/SQLiteQueryBuilder.java @@ -40,7 +40,7 @@ public class SQLiteQueryBuilder private Map mProjectionMap = null; private String mTables = ""; - private final StringBuilder mWhereClause = new StringBuilder(64); + private StringBuilder mWhereClause = null; // lazily created private boolean mDistinct; private SQLiteDatabase.CursorFactory mFactory; @@ -89,6 +89,9 @@ public class SQLiteQueryBuilder * @param inWhere the chunk of text to append to the WHERE clause. */ public void appendWhere(CharSequence inWhere) { + if (mWhereClause == null) { + mWhereClause = new StringBuilder(inWhere.length() + 16); + } if (mWhereClause.length() == 0) { mWhereClause.append('('); } @@ -106,6 +109,9 @@ public class SQLiteQueryBuilder * to avoid SQL injection attacks */ public void appendWhereEscapeString(String inWhere) { + if (mWhereClause == null) { + mWhereClause = new StringBuilder(inWhere.length() + 16); + } if (mWhereClause.length() == 0) { mWhereClause.append('('); } @@ -356,15 +362,16 @@ public class SQLiteQueryBuilder String[] projection = computeProjection(projectionIn); StringBuilder where = new StringBuilder(); + boolean hasBaseWhereClause = mWhereClause != null && mWhereClause.length() > 0; - if (mWhereClause.length() > 0) { + if (hasBaseWhereClause) { where.append(mWhereClause.toString()); where.append(')'); } // Tack on the user's selection, if present. if (selection != null && selection.length() > 0) { - if (mWhereClause.length() > 0) { + if (hasBaseWhereClause) { where.append(" AND "); }