Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 64492d99 authored by Yorke Lee's avatar Yorke Lee Committed by Android Git Automerger
Browse files

am 0b9af237: am 088b0b81: am d126f874: Fix Dialer OOM when building smart dialling index

* commit '0b9af237':
  Fix Dialer OOM when building smart dialling index
parents 61c54934 0b9af237
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -163,6 +163,17 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
        /** Selects only rows that have been updated after a certain time stamp.*/
        static final String SELECT_UPDATED_CLAUSE =
                Phone.CONTACT_LAST_UPDATED_TIMESTAMP + " > ?";

        /** Ignores contacts that have an unreasonably long lookup key. These are likely to be
         * the result of multiple (> 50) merged raw contacts, and are likely to cause
         * OutOfMemoryExceptions within SQLite, or cause memory allocation problems later on
         * when iterating through the cursor set (see b/13133579)
         */
        static final String SELECT_IGNORE_LOOKUP_KEY_TOO_LONG_CLAUSE =
                "length(" + Phone.LOOKUP_KEY + ") < 1000";

        static final String SELECTION = SELECT_UPDATED_CLAUSE + " AND " +
                SELECT_IGNORE_LOOKUP_KEY_TOO_LONG_CLAUSE;
    }

    /** Query options for querying the deleted contact database.*/
@@ -658,7 +669,6 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
                } else {
                    insert.bindString(5, displayName);
                }

                insert.bindLong(1, updatedContactCursor.getLong(PhoneQuery.PHONE_ID));
                insert.bindLong(3, updatedContactCursor.getLong(PhoneQuery.PHONE_CONTACT_ID));
                insert.bindLong(6, updatedContactCursor.getLong(PhoneQuery.PHONE_PHOTO_ID));
@@ -758,7 +768,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper {
             * update time.
             */
            final Cursor updatedContactCursor = mContext.getContentResolver().query(PhoneQuery.URI,
                    PhoneQuery.PROJECTION, PhoneQuery.SELECT_UPDATED_CLAUSE,
                    PhoneQuery.PROJECTION, PhoneQuery.SELECTION,
                    new String[]{lastUpdateMillis}, null);

            /** Sets the time after querying the database as the current update time. */