diff --git a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
index b14e5fd..05de829 100644
--- a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
+++ b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
@@ -143,7 +143,20 @@
                         "   (SELECT pdu.thread_id FROM part JOIN pdu ON pdu._id=part.mid " +
                         "     WHERE part._id=new._id LIMIT 1); " +
                         " END";
-    
+
+    // When the 'mid' column in the part table is updated, we need to run the trigger to update
+    // the threads table's has_attachment column, if the part is an attachment.
+    private static final String PART_UPDATE_THREADS_ON_UPDATE_TRIGGER =
+                        "CREATE TRIGGER update_threads_on_update_part " +
+                        " AFTER UPDATE of " + Part.MSG_ID + " ON part " +
+                        " WHEN new.ct != 'text/plain' AND new.ct != 'application/smil' " +
+                        " BEGIN " +
+                        "  UPDATE threads SET has_attachment=1 WHERE _id IN " +
+                        "   (SELECT pdu.thread_id FROM part JOIN pdu ON pdu._id=part.mid " +
+                        "     WHERE part._id=new._id LIMIT 1); " +
+                        " END";
+
+
     // When a part is deleted (with the same non-text/SMIL constraint as when
     // we set has_attachment), update the threads table for all threads.
     // Unfortunately we cannot update only the thread that the part was
@@ -167,7 +180,7 @@
     private static MmsSmsDatabaseHelper mInstance = null;
 
     static final String DATABASE_NAME = "mmssms.db";
-    static final int DATABASE_VERSION = 43;
+    static final int DATABASE_VERSION = 44;
 
     private MmsSmsDatabaseHelper(Context context) {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
@@ -395,6 +408,7 @@
         // Update threads table to indicate whether attachments exist when
         // parts are inserted or deleted.
         db.execSQL(PART_UPDATE_THREADS_ON_INSERT_TRIGGER);
+        db.execSQL(PART_UPDATE_THREADS_ON_UPDATE_TRIGGER);
         db.execSQL(PART_UPDATE_THREADS_ON_DELETE_TRIGGER);
     }
 
@@ -751,6 +765,22 @@
             } finally {
                 db.endTransaction();
             }
+            // fall through
+        case 43:
+            if (currentVersion <= 43) {
+                return;
+            }
+
+            db.beginTransaction();
+            try {
+                upgradeDatabaseToVersion44(db);
+                db.setTransactionSuccessful();
+            } catch (Throwable ex) {
+                Log.e(TAG, ex.getMessage(), ex);
+                break;
+            } finally {
+                db.endTransaction();
+            }
             return;
         }
 
@@ -813,4 +843,16 @@
         db.execSQL(PART_UPDATE_THREADS_ON_INSERT_TRIGGER);
         db.execSQL(PART_UPDATE_THREADS_ON_DELETE_TRIGGER);
     }
+
+    private void upgradeDatabaseToVersion44(SQLiteDatabase db) {
+        // Set the values of that column correctly based on the current
+        // contents of the database.
+        db.execSQL("UPDATE threads SET has_attachment=1 WHERE _id IN " +
+                   "  (SELECT DISTINCT pdu.thread_id FROM part " +
+                   "   JOIN pdu ON pdu._id=part.mid " +
+                   "   WHERE part.ct != 'text/plain' AND part.ct != 'application/smil')");
+
+        // add the update trigger for keeping the threads up to date.
+        db.execSQL(PART_UPDATE_THREADS_ON_UPDATE_TRIGGER);
+    }
 }
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index 324d007..59c046f 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -26,6 +26,7 @@
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
 import android.os.Environment;
+import android.preference.PreferenceManager;
 import android.provider.Telephony;
 import android.util.Config;
 import android.util.Log;
@@ -49,9 +50,14 @@
     private static final int URL_CURRENT = 2;
     private static final int URL_ID = 3;
     private static final int URL_RESTOREAPN = 4;
+    private static final int URL_PREFERAPN = 5;
 
     private static final String TAG = "TelephonyProvider";
     private static final String CARRIERS_TABLE = "carriers";
+
+    private static final String PREF_FILE = "preferred-apn";
+    private static final String COLUMN_APN_ID = "apn_id";
+
     private static final String PARTNER_APNS_PATH = "etc/apns-conf.xml";
 
     private static final UriMatcher s_urlMatcher = new UriMatcher(UriMatcher.NO_MATCH);
@@ -64,6 +70,7 @@
         s_urlMatcher.addURI("telephony", "carriers/current", URL_CURRENT);
         s_urlMatcher.addURI("telephony", "carriers/#", URL_ID);
         s_urlMatcher.addURI("telephony", "carriers/restore", URL_RESTOREAPN);
+        s_urlMatcher.addURI("telephony", "carriers/preferapn", URL_PREFERAPN);
 
         s_currentNullMap = new ContentValues(1);
         s_currentNullMap.put("current", (Long) null);
@@ -137,7 +144,7 @@
                 publicversion = Integer.parseInt(parser.getAttributeValue(null, "version"));
                 loadApns(db, parser);
             } catch (Exception e) {
-                Log.e(TAG, "Got execption while loading APN database.", e);
+                Log.e(TAG, "Got exception while loading APN database.", e);
             } finally {
                 parser.close();
             }
@@ -263,6 +270,18 @@
         return true;
     }
 
+    private void setPreferredApnId(Long id) {
+        SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = sp.edit();
+        editor.putLong(COLUMN_APN_ID, id != null ? id.longValue() : -1);        
+        editor.commit();
+    }
+
+    private long getPreferredApnId() {
+        SharedPreferences sp = getContext().getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
+        return sp.getLong(COLUMN_APN_ID, -1);
+    }
+
     @Override
     public Cursor query(Uri url, String[] projectionIn, String selection,
             String[] selectionArgs, String sort) {
@@ -279,6 +298,8 @@
 
             case URL_CURRENT: {
                 qb.appendWhere("current IS NOT NULL");
+                // ignore the selection
+                selection = null;
                 break;
             }
 
@@ -287,6 +308,11 @@
                 break;
             }
 
+            case URL_PREFERAPN: {
+                qb.appendWhere("_id = " + getPreferredApnId());
+                break;
+            }
+
             default: {
                 return null;
             }
@@ -308,6 +334,9 @@
         case URL_ID:
             return "vnd.android.cursor.item/telephony-carrier";
 
+        case URL_PREFERAPN:
+            return "vnd.android.cursor.item/telephony-carrier";
+
         default:
             throw new IllegalArgumentException("Unknown URL " + url);
         }
@@ -396,6 +425,16 @@
                 }
                 break;
             }
+
+            case URL_PREFERAPN:
+            {
+                if (initialValues != null) {
+                    if(initialValues.containsKey(COLUMN_APN_ID)) {
+                        setPreferredApnId(initialValues.getAsLong(COLUMN_APN_ID));
+                    }
+                }
+                break;
+            }
         }
 
         if (notify) {
@@ -441,6 +480,13 @@
                 break;
             }
 
+            case URL_PREFERAPN:
+            {
+                setPreferredApnId((long)-1);
+                count = 1;
+                break;
+            }
+
             default: {
                 throw new UnsupportedOperationException("Cannot delete that URL: " + url);
             }
@@ -456,7 +502,7 @@
     @Override
     public int update(Uri url, ContentValues values, String where, String[] whereArgs)
     {
-        int count;
+        int count = 0;
 
         checkPermission();
 
@@ -487,6 +533,17 @@
                 break;
             }
 
+            case URL_PREFERAPN:
+            {
+                if (values != null) {
+                    if (values.containsKey(COLUMN_APN_ID)) {
+                        setPreferredApnId(values.getAsLong(COLUMN_APN_ID));
+                        count = 1;
+                    }
+                }
+                break;
+            }
+
             default: {
                 throw new UnsupportedOperationException("Cannot update that URL: " + url);
             }
@@ -511,6 +568,7 @@
         SQLiteDatabase db = mOpenHelper.getWritableDatabase();
 
         db.delete(CARRIERS_TABLE, null, null);
+        setPreferredApnId((long)-1);
         ((DatabaseHelper) mOpenHelper).initDatabase(db);
     }
 }
