summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/database/query.inc18
-rw-r--r--modules/simpletest/tests/database_test.test4
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.'));