diff --git a/dynamic_entity_reference.install b/dynamic_entity_reference.install index da423c4..0f6bfd7 100644 --- a/dynamic_entity_reference.install +++ b/dynamic_entity_reference.install @@ -128,6 +128,8 @@ function dynamic_entity_reference_update_8201() { * Create index on all target_id_int fields. * * By creating the index, joins on this column will be speed up significantly. + * + * @return string */ function dynamic_entity_reference_update_8202() { $schema = \Drupal::database()->schema(); @@ -169,6 +171,11 @@ function dynamic_entity_reference_update_8202() { ]; if (!$schema->indexExists($table, $column)) { $schema->addIndex($table, $column, [$column, $index_column], $spec); + $args = [ + ':fields' => implode(', ', [$column, $index_column]), + ':table' => $table, + ]; + return t('Adding index on ":fields" fields from ":table" table.', $args); } } } diff --git a/src/EventSubscriber/FieldStorageSubscriber.php b/src/EventSubscriber/FieldStorageSubscriber.php index 0951d07..d2ba495 100644 --- a/src/EventSubscriber/FieldStorageSubscriber.php +++ b/src/EventSubscriber/FieldStorageSubscriber.php @@ -153,17 +153,23 @@ class FieldStorageSubscriber implements EventSubscriberInterface { $schema_info = $storage_definitions[$field_name]->getSchema(); $index_columns[$table] = [ - $index_column => $schema_info['columns']['target_type'] + $index_column => $schema_info['columns']['target_type'], ]; if ($entity_type->isRevisionable() && ($storage_definitions[$field_name]->isRevisionable())) { try { if ($mapping->requiresDedicatedTableStorage($storage_definitions[$field_name])) { $tables[$mapping->getDedicatedRevisionTableName($storage_definitions[$field_name])][] = $column; + $index_columns[$mapping->getDedicatedRevisionTableName($storage_definitions[$field_name])] = [ + $index_column => $schema_info['columns']['target_type'], + ]; } elseif ($mapping->allowsSharedTableStorage($storage_definitions[$field_name])) { $revision_table = $entity_type->getRevisionDataTable() ?: $entity_type->getRevisionTable(); $tables[$revision_table][] = $column; $tables[$revision_table] = array_unique($tables[$revision_table]); + $index_columns[$revision_table] = [ + $index_column => $schema_info['columns']['target_type'], + ]; } } catch (SqlContentEntityStorageException $e) {