Index: includes/database/sqlite/query.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database/sqlite/query.inc,v
retrieving revision 1.14
diff -u -p -r1.14 query.inc
--- includes/database/sqlite/query.inc	29 Nov 2010 04:45:11 -0000	1.14
+++ includes/database/sqlite/query.inc	22 Dec 2010 00:04:13 -0000
@@ -97,7 +97,7 @@ class UpdateQuery_sqlite extends UpdateQ
     foreach ($fields as $field => $data) {
       if (is_array($data)) {
         // The field is an expression.
-        $condition->condition($field, $data['expression'], '<>');
+        $condition->where($field . ' <> ' . $data['expression']);
         $condition->isNull($field);
       }
       elseif (!isset($data)) {
Index: modules/simpletest/tests/database_test.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/database_test.test,v
retrieving revision 1.105
diff -u -p -r1.105 database_test.test
--- modules/simpletest/tests/database_test.test	15 Dec 2010 06:52:54 -0000	1.105
+++ modules/simpletest/tests/database_test.test	22 Dec 2010 00:04:13 -0000
@@ -776,6 +776,16 @@ class DatabaseUpdateTestCase extends Dat
     $this->assertIdentical($num_matches, '1', t('Updated fields successfully.'));
   }
 
+  /**
+   * Test updating with expressions.
+   */
+  function testExpressionUpdate() {
+    db_query('UPDATE {test} SET age = :age WHERE id = :id', array(':age' => 1, ':id' => 1));
+    $num_rows = db_update('test')
+      ->expression('age', 'age * age')
+      ->execute();
+    $this->assertIdentical($num_rows, 3, t('Expression entered as straight SQL.'));
+  }
 }
 
 /**
