Commit c1ce884e authored by webchick's avatar webchick

#612392 by chx and Crell: Allow lowercase comparison operators in DBTNG.

parent 7536a354
......@@ -1321,12 +1321,26 @@ protected function mapConditionOperator($operator) {
'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;
......
......@@ -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.'));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment