diff -u b/core/modules/system/lib/Drupal/system/Tests/Database/UpdateComplexTest.php b/core/modules/system/lib/Drupal/system/Tests/Database/UpdateComplexTest.php --- b/core/modules/system/lib/Drupal/system/Tests/Database/UpdateComplexTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Database/UpdateComplexTest.php @@ -137,15 +137,23 @@ * Test UPDATE with a subselect value. */ function testSubSelectUpdate() { - $subselect = db_select('test', 't'); - $subselect->addExpression('MAX(age) + :increment', 'max_age', array(':increment' => 1)); - $query = db_update('test_task')->expression('priority', $subselect); - $string_test = clone $query; + $subselect = db_select('test_task', 't'); + $subselect->addExpression('MAX(priority) + :increment', 'max_priority', array(':increment' => 30)); + // Clone this to make sure we are running a different query when + // asserting. + $select = clone $subselect; + $query = db_update('test') + ->expression('age', $subselect) + ->condition('name', 'Ringo'); + // Save the query for a __toString test later. + $string_test = $query; $query->execute(); - $results = array_map('intval', db_query('SELECT priority FROM {test_task}')->fetchCol()); - $this->assertIdentical(array(29), array_unique($results)); + $after_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetchField(); + $expected_age = $select->execute()->fetchField(); + $this->assertEqual($after_age, $expected_age); + // Replace whitespace with a single space. $query_string = preg_replace('/\s+/', ' ', $string_test); - $this->assertIdentical('UPDATE {test_task} SET priority= (SELECT MAX(age) + :increment AS max_age FROM {test} t)', $query_string); + $this->assertIdentical('UPDATE {test} SET age= (SELECT MAX(priority) + :increment AS max_priority FROM {test_task} t) WHERE (name = :db_condition_placeholder_0)', trim($query_string)); } }