Issue #2527816 by jhedstrom, pfrenssen, chx, catch: Logic error in SqlContentEntityStorage::countFieldData() attempts to drop `name` column
parent
d404b26005
commit
49f5b153a0
|
@ -1623,9 +1623,11 @@ class SqlContentEntityStorage extends ContentEntityStorageBase implements SqlEnt
|
|||
$or->isNotNull($table_mapping->getFieldColumnName($storage_definition, $property_name));
|
||||
}
|
||||
$query->condition($or);
|
||||
$query
|
||||
->fields('t', array($this->idKey))
|
||||
->distinct(TRUE);
|
||||
if (!$as_bool) {
|
||||
$query
|
||||
->fields('t', array($this->idKey))
|
||||
->distinct(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
// @todo Find a way to count field data also for fields having custom
|
||||
|
@ -1635,7 +1637,9 @@ class SqlContentEntityStorage extends ContentEntityStorageBase implements SqlEnt
|
|||
// If we are performing the query just to check if the field has data
|
||||
// limit the number of rows.
|
||||
if ($as_bool) {
|
||||
$query->range(0, 1);
|
||||
$query
|
||||
->range(0, 1)
|
||||
->addExpression('1');
|
||||
}
|
||||
else {
|
||||
// Otherwise count the number of rows.
|
||||
|
|
|
@ -29,6 +29,11 @@ class FieldDataCountTest extends FieldUnitTestBase {
|
|||
*/
|
||||
protected $storageRev;
|
||||
|
||||
/**
|
||||
* @var \Drupal\Core\Entity\DynamicallyFieldableEntityStorageInterface
|
||||
*/
|
||||
protected $storageUser;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -37,6 +42,7 @@ class FieldDataCountTest extends FieldUnitTestBase {
|
|||
$this->installEntitySchema('entity_test_rev');
|
||||
$this->storage = \Drupal::entityManager()->getStorage('entity_test');
|
||||
$this->storageRev = \Drupal::entityManager()->getStorage('entity_test_rev');
|
||||
$this->storageUser = \Drupal::entityManager()->getStorage('user');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -136,4 +142,22 @@ class FieldDataCountTest extends FieldUnitTestBase {
|
|||
$this->assertEqual(count($entity->{$this->fieldTestData->field_name_2}), $cardinality, format_string('Revision %revision_id: expected number of values.', array('%revision_id' => $first_revision)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that we can count a table that contains an entry with index 0.
|
||||
*/
|
||||
public function testCountWithIndex0() {
|
||||
// Create an entry for the anonymous user, who has user ID 0.
|
||||
$user = $this->storageUser
|
||||
->create(array(
|
||||
'uid' => 0,
|
||||
'name' => 'anonymous',
|
||||
'mail' => NULL,
|
||||
'status' => FALSE,
|
||||
));
|
||||
$user->save();
|
||||
|
||||
$storage = $user->getFieldDefinition('name')->getFieldStorageDefinition();
|
||||
$this->assertIdentical(TRUE, $this->storageUser->countFieldData($storage, TRUE));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue