Issue #813540 by jbrown, chx: Fixed Comparisons involving NULL must never return true.

merge-requests/26/head
webchick 2011-12-10 23:29:21 -06:00
parent e59e9d948f
commit 06f31080c7
2 changed files with 17 additions and 6 deletions

View File

@ -1704,9 +1704,6 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
if (is_array($value)) {
$operator = 'IN';
}
elseif (!isset($value)) {
$operator = 'IS NULL';
}
else {
$operator = '=';
}
@ -1740,7 +1737,7 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
* Implements QueryConditionInterface::isNull().
*/
public function isNull($field) {
return $this->condition($field);
return $this->condition($field, NULL, 'IS NULL');
}
/**

View File

@ -1454,11 +1454,25 @@ class DatabaseSelectTestCase extends DatabaseTestCase {
}
/**
* Test that we can find a record with a NULL value.
* Test that a comparison with NULL is always FALSE.
*/
function testNullCondition() {
$this->ensureSampleDataNull();
$names = db_select('test_null', 'tn')
->fields('tn', array('name'))
->condition('age', NULL)
->execute()->fetchCol();
$this->assertEqual(count($names), 0, t('No records found when comparing to NULL.'));
}
/**
* Test that we can find a record with a NULL value.
*/
function testIsNullCondition() {
$this->ensureSampleDataNull();
$names = db_select('test_null', 'tn')
->fields('tn', array('name'))
->isNull('age')
@ -1471,7 +1485,7 @@ class DatabaseSelectTestCase extends DatabaseTestCase {
/**
* Test that we can find a record without a NULL value.
*/
function testNotNullCondition() {
function testIsNotNullCondition() {
$this->ensureSampleDataNull();
$names = db_select('test_null', 'tn')