Issue #1139638: the SQLite driver cannot update a column to NULL.

From: Damien Tournoud <damien@commerceguys.com>


---
 includes/database/sqlite/query.inc          |    2 +-
 modules/simpletest/tests/database_test.test |   15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/includes/database/sqlite/query.inc b/includes/database/sqlite/query.inc
index d456afa..a176ed6 100644
--- a/includes/database/sqlite/query.inc
+++ b/includes/database/sqlite/query.inc
@@ -101,7 +101,7 @@ class UpdateQuery_sqlite extends UpdateQuery {
       }
       elseif (!isset($data)) {
         // The field will be set to NULL.
-        $condition->isNull($field);
+        $condition->isNotNull($field);
       }
       else {
         $condition->condition($field, $data, '<>');
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index 2a086ce..231355c 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -719,6 +719,21 @@ class DatabaseUpdateTestCase extends DatabaseTestCase {
   }
 
   /**
+   * Confirm updating to NULL.
+   */
+  function testSimpleNullUpdate() {
+    $this->ensureSampleDataNull();
+    $num_updated = db_update('test_null')
+      ->fields(array('age' => NULL))
+      ->condition('name', 'Kermit')
+      ->execute();
+    $this->assertIdentical($num_updated, 1, t('Updated 1 record.'));
+
+    $saved_age = db_query('SELECT age FROM {test_null} WHERE name = :name', array(':name' => 'Kermit'))->fetchField();
+    $this->assertNull($saved_age, t('Updated name successfully.'));
+  }
+
+  /**
    * Confirm that we can update a multiple records successfully.
    */
   function testMultiUpdate() {
