Issue #1226796 by sun, catch, Damien Tournoud: Fixed Not equal operator '!=' is not supported by all databases, must be '<>'.

merge-requests/26/head
webchick 2011-09-27 12:06:35 -07:00
parent 3eb1c0f675
commit 5dedc4c400
7 changed files with 109 additions and 8 deletions

View File

@ -606,7 +606,7 @@ class EntityFieldQuery {
* dependent on $operator.
* @param $operator
* Possible values:
* - '=', '!=', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS': These
* - '=', '<>', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS': These
* operators expect $value to be a literal of the same type as the
* column.
* - 'IN', 'NOT IN': These operators expect $value to be an array of
@ -620,6 +620,11 @@ class EntityFieldQuery {
* The called object.
*/
public function entityCondition($name, $value, $operator = NULL) {
// The '!=' operator is deprecated in favour of the '<>' operator since the
// latter is ANSI SQL compatible.
if ($operator == '!=') {
$operator = '<>';
}
$this->entityConditions[$name] = array(
'value' => $value,
'operator' => $operator,
@ -724,7 +729,7 @@ class EntityFieldQuery {
* element in the array is dependent on $operator.
* @param $operator
* Possible values:
* - '=', '!=', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS': These
* - '=', '<>', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS': These
* operators expect $value to be a literal of the same type as the
* column.
* - 'IN', 'NOT IN': These operators expect $value to be an array of
@ -751,6 +756,11 @@ class EntityFieldQuery {
* The called object.
*/
protected function addFieldCondition(&$conditions, $field, $column = NULL, $value = NULL, $operator = NULL, $delta_group = NULL, $language_group = NULL) {
// The '!=' operator is deprecated in favour of the '<>' operator since the
// latter is ANSI SQL compatible.
if ($operator == '!=') {
$operator = '<>';
}
if (is_scalar($field)) {
$field_definition = field_info_field($field);
if (empty($field_definition)) {
@ -791,7 +801,7 @@ class EntityFieldQuery {
* array is dependent on $operator.
* @param $operator
* Possible values:
* - '=', '!=', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS': These
* - '=', '<>', '>', '>=', '<', '<=', 'STARTS_WITH', 'CONTAINS': These
* operators expect $value to be a literal of the same type as the
* column.
* - 'IN', 'NOT IN': These operators expect $value to be an array of
@ -805,6 +815,11 @@ class EntityFieldQuery {
* The called object.
*/
public function propertyCondition($column, $value, $operator = NULL) {
// The '!=' operator is deprecated in favour of the '<>' operator since the
// latter is ANSI SQL compatible.
if ($operator == '!=') {
$operator = '<>';
}
$this->propertyConditions[] = array(
'column' => $column,
'value' => $value,

View File

@ -1426,7 +1426,7 @@ function update_retrieve_dependencies() {
$return = array();
// Get a list of installed modules, arranged so that we invoke their hooks in
// the same order that module_invoke_all() does.
$modules = db_query("SELECT name FROM {system} WHERE type = 'module' AND schema_version != :schema ORDER BY weight ASC, name ASC", array(':schema' => SCHEMA_UNINSTALLED))->fetchCol();
$modules = db_query("SELECT name FROM {system} WHERE type = 'module' AND schema_version <> :schema ORDER BY weight ASC, name ASC", array(':schema' => SCHEMA_UNINSTALLED))->fetchCol();
foreach ($modules as $module) {
$function = $module . '_update_dependencies';
if (function_exists($function)) {

View File

@ -282,7 +282,7 @@ function field_test_field_storage_query($field_id, $conditions, $count, &$cursor
case '=':
$match = $match && $row->{$column} == $value;
break;
case '!=':
case '<>':
case '<':
case '<=':
case '>':

View File

@ -719,6 +719,31 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
array('test_entity', 3),
), t('Test the "equal to" operation on a field.'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity_bundle_key')
->propertyCondition('ftid', 3, '<>');
$this->assertEntityFieldQuery($query, array(
array('test_entity_bundle_key', 1),
array('test_entity_bundle_key', 2),
array('test_entity_bundle_key', 4),
array('test_entity_bundle_key', 5),
array('test_entity_bundle_key', 6),
), t('Test the "not equal to" operation on a property.'));
$query = new EntityFieldQuery();
$query->fieldCondition($this->fields[0], 'value', 3, '<>');
$this->assertEntityFieldQuery($query, array(
array('test_entity_bundle_key', 1),
array('test_entity_bundle_key', 2),
array('test_entity_bundle_key', 4),
array('test_entity_bundle_key', 5),
array('test_entity_bundle_key', 6),
array('test_entity', 1),
array('test_entity', 2),
array('test_entity', 4),
), t('Test the "not equal to" operation on a field.'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity_bundle_key')
@ -1084,6 +1109,15 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
array('test_entity', 1),
), t('Test with a delta meta condition.'));
// Test language field meta condition.
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>');
$this->assertEntityFieldQuery($query, array(
array('test_entity', 1),
), t('Test with a language meta condition.'));
// Test language field meta condition.
$query = new EntityFieldQuery();
$query
@ -1110,6 +1144,16 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
->fieldDeltaCondition($this->fields[0], 1, '>=', 'group');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped delta meta condition (empty result set).'));
// Test language grouping.
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', NULL, 'group')
->fieldLanguageCondition($this->fields[0], 'en', '<>', NULL, 'group');
$this->assertEntityFieldQuery($query, array(
array('test_entity', 1),
), t('Test with a grouped language meta condition.'));
// Test language grouping.
$query = new EntityFieldQuery();
$query
@ -1120,6 +1164,13 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
array('test_entity', 1),
), t('Test with a grouped language meta condition.'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', NULL, 'group')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>', NULL, 'group');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped language meta condition (empty result set).'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
@ -1127,6 +1178,17 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '!=', NULL, 'group');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped language meta condition (empty result set).'));
// Test delta and language grouping.
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '<', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], 'en', '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(
array('test_entity', 1),
), t('Test with a grouped delta + language meta condition.'));
// Test delta and language grouping.
$query = new EntityFieldQuery();
$query
@ -1138,6 +1200,14 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
array('test_entity', 1),
), t('Test with a grouped delta + language meta condition.'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '>=', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], 'en', '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped delta + language meta condition (empty result set, delta condition unsatisifed).'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
@ -1146,6 +1216,14 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
->fieldLanguageCondition($this->fields[0], 'en', '!=', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped delta + language meta condition (empty result set, delta condition unsatisifed).'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '<', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped delta + language meta condition (empty result set, language condition unsatisifed).'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
@ -1154,6 +1232,14 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '!=', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped delta + language meta condition (empty result set, language condition unsatisifed).'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')
->fieldCondition($this->fields[0], 'value', 0, '=', 'delta', 'language')
->fieldDeltaCondition($this->fields[0], 1, '>=', 'delta', 'language')
->fieldLanguageCondition($this->fields[0], LANGUAGE_NONE, '<>', 'delta', 'language');
$this->assertEntityFieldQuery($query, array(), t('Test with a grouped delta + language meta condition (empty result set, both conditions unsatisifed).'));
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'test_entity', '=')

View File

@ -19,7 +19,7 @@ function system_admin_config_page() {
SELECT m.*, ml.*
FROM {menu_links} ml
INNER JOIN {menu_router} m ON ml.router_path = m.path
WHERE ml.link_path != 'admin/help' AND menu_name = :menu_name AND ml.plid = :mlid AND hidden = 0", $admin, array('fetch' => PDO::FETCH_ASSOC));
WHERE ml.link_path <> 'admin/help' AND menu_name = :menu_name AND ml.plid = :mlid AND hidden = 0", $admin, array('fetch' => PDO::FETCH_ASSOC));
foreach ($result as $item) {
_menu_link_translate($item);
if (!$item['access']) {

View File

@ -544,7 +544,7 @@ function hook_cron() {
// Long-running operation example, leveraging a queue:
// Fetch feeds from other sites.
$result = db_query('SELECT * FROM {aggregator_feed} WHERE checked + refresh < :time AND refresh != :never', array(
$result = db_query('SELECT * FROM {aggregator_feed} WHERE checked + refresh < :time AND refresh <> :never', array(
':time' => REQUEST_TIME,
':never' => AGGREGATOR_CLEAR_NEVER,
));

View File

@ -2912,7 +2912,7 @@ function system_get_module_admin_tasks($module, $info) {
->condition('ml.hidden', 0, '>=')
->condition('ml.module', 'system')
->condition('m.number_parts', 1, '>')
->condition('m.page_callback', 'system_admin_menu_block_page', '!=');
->condition('m.page_callback', 'system_admin_menu_block_page', '<>');
foreach ($query->execute() as $link) {
_menu_link_translate($link);
if ($link['access']) {