Revert "Revert "Issue #2834291 by claudiu.cristea, Berdir, amateescu, timmillwood, catch: Add a SQL index for entity types that are using EntityPublishedInterface""
This reverts commit d2e8cbdc2e
.
8.3.x
parent
d1eacac2e2
commit
83018b7596
|
@ -7,6 +7,7 @@ use Drupal\Core\Database\DatabaseException;
|
|||
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
|
||||
use Drupal\Core\Entity\ContentEntityTypeInterface;
|
||||
use Drupal\Core\Entity\EntityManagerInterface;
|
||||
use Drupal\Core\Entity\EntityPublishedInterface;
|
||||
use Drupal\Core\Entity\EntityStorageException;
|
||||
use Drupal\Core\Entity\EntityTypeInterface;
|
||||
use Drupal\Core\Entity\Exception\FieldStorageDefinitionUpdateForbiddenException;
|
||||
|
@ -548,6 +549,24 @@ class SqlContentEntityStorageSchema implements DynamicallyFieldableEntityStorage
|
|||
$this->processRevisionDataTable($entity_type, $schema[$tables['revision_data_table']]);
|
||||
}
|
||||
|
||||
// Add an index for the 'published' entity key.
|
||||
if (is_subclass_of($entity_type->getClass(), EntityPublishedInterface::class)) {
|
||||
$published_key = $entity_type->getKey('published');
|
||||
if ($published_key && !$storage_definitions[$published_key]->hasCustomStorage()) {
|
||||
$published_field_table = $table_mapping->getFieldTableName($published_key);
|
||||
$id_key = $entity_type->getKey('id');
|
||||
if ($bundle_key = $entity_type->getKey('bundle')) {
|
||||
$key = "{$published_key}_{$bundle_key}";
|
||||
$columns = [$published_key, $bundle_key, $id_key];
|
||||
}
|
||||
else {
|
||||
$key = $published_key;
|
||||
$columns = [$published_key, $id_key];
|
||||
}
|
||||
$schema[$published_field_table]['indexes'][$this->getEntityIndexName($entity_type, $key)] = $columns;
|
||||
}
|
||||
}
|
||||
|
||||
$this->schema[$entity_type_id] = $schema;
|
||||
|
||||
// Restore the actual definition.
|
||||
|
|
|
@ -66,6 +66,9 @@ class CommentUpdateTest extends UpdatePathTestBase {
|
|||
// Check that the entity key exists and it has the correct value.
|
||||
$entity_type = \Drupal::entityDefinitionUpdateManager()->getEntityType('comment');
|
||||
$this->assertEqual('status', $entity_type->getKey('published'));
|
||||
|
||||
// Check that the {comment_field_data} table status index has been created.
|
||||
$this->assertTrue(\Drupal::database()->schema()->indexExists('comment_field_data', 'comment__status_comment_type'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@ class NodeStorageSchema extends SqlContentEntityStorageSchema {
|
|||
|
||||
$schema['node_field_data']['indexes'] += array(
|
||||
'node__frontpage' => array('promote', 'status', 'sticky', 'created'),
|
||||
'node__status_type' => array('status', 'type', 'nid'),
|
||||
'node__title_type' => array('title', array('type', 4)),
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in New Issue