diff options
-rw-r--r-- | includes/database/query.inc | 18 | ||||
-rw-r--r-- | modules/simpletest/tests/database_test.test | 4 |
2 files changed, 19 insertions, 3 deletions
diff --git a/includes/database/query.inc b/includes/database/query.inc index 98723496d..993275749 100644 --- a/includes/database/query.inc +++ b/includes/database/query.inc @@ -1321,12 +1321,26 @@ class DatabaseCondition implements QueryConditionInterface, Countable { 'BETWEEN' => array('delimiter' => ' AND '), 'IN' => array('delimiter' => ', ', 'prefix' => ' (', 'postfix' => ')'), 'NOT IN' => array('delimiter' => ', ', 'prefix' => ' (', 'postfix' => ')'), - 'LIKE' => array('operator' => 'LIKE'), 'IS NULL' => array('use_value' => FALSE), 'IS NOT NULL' => array('use_value' => FALSE), + // These ones are here for performance reasons. + '=' => array(), + '<' => array(), + '>' => array(), + '>=' => array(), + '<=' => array(), + 'LIKE' => array(), ); + if (isset($specials[$operator])) { + $return = $specials[$operator]; + } + else { + // We need to upper case because PHP index matches are case sensitive but + // do not need the more expensive drupal_strtoupper because SQL statements are ASCII. + $operator = strtoupper($operator); + $return = isset($specials[$operator]) ? $specials[$operator] : array(); + } - $return = isset($specials[$operator]) ? $specials[$operator] : array(); $return += array('operator' => $operator); return $return; diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test index 87e6881a5..8970224c4 100644 --- a/modules/simpletest/tests/database_test.test +++ b/modules/simpletest/tests/database_test.test @@ -790,9 +790,11 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase { * Test WHERE NOT IN clauses. */ function testNotInConditionUpdate() { + // The o is lowercase in the 'NoT IN' operator, to make sure the operators + // work in mixed case. $num_updated = db_update('test') ->fields(array('job' => 'Musician')) - ->condition('name', array('John', 'Paul', 'George'), 'NOT IN') + ->condition('name', array('John', 'Paul', 'George'), 'NoT IN') ->execute(); $this->assertIdentical($num_updated, 1, t('Updated 1 record.')); |