Fix bug #14494292 Settings>Search>Recent searches keep on populating the same keyword if it is searched again

- do the right thing: remove the previous search queries from the Database if needed
so that there will be no dupe

Change-Id: I707eb518ea7c2a64b1407c62ff164e249fe03fa9
This commit is contained in:
Fabrice Di Meglio
2014-05-20 16:31:52 -07:00
parent 55e283282f
commit b58b28e13e

View File

@@ -1217,9 +1217,16 @@ public class Index {
long lastInsertedRowId = -1;
try {
lastInsertedRowId =
database.replaceOrThrow(Tables.TABLE_SAVED_QUERIES, null, values);
// First, delete all saved queries that are the same
database.delete(Tables.TABLE_SAVED_QUERIES,
IndexDatabaseHelper.SavedQueriesColums.QUERY + " = ?",
new String[] { params[0] });
// Second, insert the saved query
lastInsertedRowId =
database.insertOrThrow(Tables.TABLE_SAVED_QUERIES, null, values);
// Last, remove "old" saved queries
final long delta = lastInsertedRowId - MAX_SAVED_SEARCH_QUERY;
if (delta > 0) {
int count = database.delete(Tables.TABLE_SAVED_QUERIES, "rowId <= ?",