diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php index 61da55f..96cea9f 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php @@ -7,6 +7,7 @@ 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 @@ protected function getEntitySchema(ContentEntityTypeInterface $entity_type, $res $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. diff --git a/core/modules/node/src/NodeStorageSchema.php b/core/modules/node/src/NodeStorageSchema.php index 43bd465..18d6303 100644 --- a/core/modules/node/src/NodeStorageSchema.php +++ b/core/modules/node/src/NodeStorageSchema.php @@ -19,7 +19,6 @@ protected function getEntitySchema(ContentEntityTypeInterface $entity_type, $res $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)), );