summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVasu Nori <vnori@google.com>2009-12-07 18:38:11 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-12-07 18:38:11 -0800
commitc65708ef6edcc76138485095cf9c6cbe48b2bf1c (patch)
tree2b2822d6795ee4fcad966934e0fface465eb56ee
parent1588bedcd042ea77d232b9b7853235e8834f2215 (diff)
parent976ed43786dcf078a0f802716d49644691656a24 (diff)
downloadframeworks_base-c65708ef6edcc76138485095cf9c6cbe48b2bf1c.zip
frameworks_base-c65708ef6edcc76138485095cf9c6cbe48b2bf1c.tar.gz
frameworks_base-c65708ef6edcc76138485095cf9c6cbe48b2bf1c.tar.bz2
am 976ed437: am 6be01bf2: Merge change Ifa1fae13 into eclair-mr2
Merge commit '976ed43786dcf078a0f802716d49644691656a24' * commit '976ed43786dcf078a0f802716d49644691656a24': Revert "dealloc compiled-sql statements before deref'ing them from SQLiteDatabase obj."
-rw-r--r--core/java/android/database/sqlite/SQLiteDatabase.java28
-rw-r--r--core/java/android/database/sqlite/SQLiteProgram.java2
2 files changed, 12 insertions, 18 deletions
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index d9003a3..657bbcc 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -827,15 +827,6 @@ public class SQLiteDatabase extends SQLiteClosable {
}
private void closeClosable() {
- /* deallocate all compiled sql statement objects in compiledQueries cache.
- * this should be done before de-referencing all {@link SQLiteClosable} objects
- * from this database object because calling
- * {@link SQLiteClosable#onAllReferencesReleasedFromContainer()} could cause the database
- * to be closed. sqlite doesn't let a database close if there are
- * any unfinalized statements - such as the compiled-sql objects in mCompiledQueries.
- */
- resetCompiledSqlCache();
-
Iterator<Map.Entry<SQLiteClosable, Object>> iter = mPrograms.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<SQLiteClosable, Object> entry = iter.next();
@@ -844,6 +835,13 @@ public class SQLiteDatabase extends SQLiteClosable {
program.onAllReferencesReleasedFromContainer();
}
}
+
+ // finalize all compiled sql statement objects in compiledQueries cache
+ synchronized (mCompiledQueries) {
+ for (SQLiteCompiledSql compiledStatement : mCompiledQueries.values()) {
+ compiledStatement.releaseSqlStatement();
+ }
+ }
}
/**
@@ -1791,9 +1789,7 @@ public class SQLiteDatabase extends SQLiteClosable {
*/
public void setMaxSqlCacheSize(int cacheSize) {
synchronized(mCompiledQueries) {
- if (mMaxSqlCacheSize > 0) {
- resetCompiledSqlCache();
- }
+ resetCompiledSqlCache();
mMaxSqlCacheSize = (cacheSize > MAX_SQL_CACHE_SIZE) ? MAX_SQL_CACHE_SIZE
: (cacheSize < 0) ? 0 : cacheSize;
}
@@ -1804,9 +1800,6 @@ public class SQLiteDatabase extends SQLiteClosable {
*/
public void resetCompiledSqlCache() {
synchronized(mCompiledQueries) {
- for (SQLiteCompiledSql compiledStatement : mCompiledQueries.values()) {
- compiledStatement.releaseSqlStatement();
- }
mCompiledQueries.clear();
}
}
@@ -1842,7 +1835,7 @@ public class SQLiteDatabase extends SQLiteClosable {
/* reached max cachesize. before adding new entry, remove an entry from the
* cache. we don't want to wipe out the entire cache because of this:
* GCing {@link SQLiteCompiledSql} requires call to sqlite3_finalize
- * JNI method. If entire cache is wiped out, it could cause a big GC activity
+ * JNI method. If entire cache is wiped out, it could be cause a big GC activity
* just because a (rogue) process is using the cache incorrectly.
*/
Set<String> keySet = mCompiledQueries.keySet();
@@ -1851,7 +1844,8 @@ public class SQLiteDatabase extends SQLiteClosable {
break;
}
}
- mCompiledQueries.put(sql, compiledStatement);
+ compiledSql = new SQLiteCompiledSql(this, sql);
+ mCompiledQueries.put(sql, compiledSql);
}
if (SQLiteDebug.DEBUG_SQL_CACHE) {
Log.v(TAG, "|adding_sql_to_cache|" + getPath() + "|" + mCompiledQueries.size() + "|" +
diff --git a/core/java/android/database/sqlite/SQLiteProgram.java b/core/java/android/database/sqlite/SQLiteProgram.java
index 5ee2f1e..edc15cb 100644
--- a/core/java/android/database/sqlite/SQLiteProgram.java
+++ b/core/java/android/database/sqlite/SQLiteProgram.java
@@ -100,7 +100,7 @@ public abstract class SQLiteProgram extends SQLiteClosable {
* @return a unique identifier for this program
*/
public final int getUniqueId() {
- return (compiledSql != null) ? compiledSql.nStatement : 0;
+ return compiledSql.nStatement;
}
/* package */ String getSqlString() {