From 1d2f9e9368d00ec5c0967f5aaa4df2e461bd916c Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole Date: Tue, 5 May 2015 15:50:36 +0100 Subject: [PATCH] Revert "Issue #1923406 by stefan.r, yannickoo: Use ASCII character set on alphanumeric fields so we can index all 255 characters" This reverts commit ac4e35ce01b2070fbb6f223447a0b3a3b9b4f461. --- core/config/schema/core.data_types.schema.yml | 3 -- .../lib/Drupal/Core/Cache/DatabaseBackend.php | 16 ++++------- .../Core/Cache/DatabaseCacheTagsChecksum.php | 2 +- .../Drupal/Core/Config/DatabaseStorage.php | 4 +-- .../Core/Database/Driver/mysql/Schema.php | 6 ---- .../Core/Database/Driver/pgsql/Schema.php | 2 -- .../Core/Database/Driver/sqlite/Schema.php | 2 -- .../Sql/SqlContentEntityStorageSchema.php | 6 ++-- .../Field/FieldType/EntityReferenceItem.php | 2 +- .../Plugin/Field/FieldType/LanguageItem.php | 2 -- .../Plugin/Field/FieldType/StringItem.php | 3 +- .../Field/Plugin/Field/FieldType/UuidItem.php | 1 - core/lib/Drupal/Core/Menu/MenuTreeStorage.php | 10 +++---- core/modules/aggregator/src/Entity/Feed.php | 1 - core/modules/aggregator/src/FeedInterface.php | 3 +- core/modules/ban/ban.install | 2 +- core/modules/comment/comment.install | 4 +-- core/modules/comment/src/Entity/Comment.php | 2 -- core/modules/dblog/dblog.install | 4 +-- core/modules/file/file.install | 6 ++-- core/modules/file/src/Entity/File.php | 1 - core/modules/locale/locale.install | 14 +++++----- .../src/Entity/MenuLinkContent.php | 4 +-- core/modules/node/node.install | 4 +-- core/modules/search/search.install | 8 +++--- core/modules/shortcut/shortcut.install | 2 +- core/modules/simpletest/simpletest.install | 6 ++-- core/modules/system/database.api.php | 2 -- .../Tests/Cache/DatabaseBackendUnitTest.php | 20 ------------- .../system/src/Tests/Database/SchemaTest.php | 18 ------------ core/modules/system/system.install | 28 +++++++++---------- .../Plugin/Field/FieldType/TextLongItem.php | 2 +- .../Field/FieldType/TextWithSummaryItem.php | 2 +- core/modules/user/user.install | 4 +-- core/modules/views/src/EntityViewsData.php | 1 - .../Sql/SqlContentEntityStorageSchemaTest.php | 12 ++++---- 36 files changed, 70 insertions(+), 139 deletions(-) diff --git a/core/config/schema/core.data_types.schema.yml b/core/config/schema/core.data_types.schema.yml index 496808761d8..cc89fa97a6c 100644 --- a/core/config/schema/core.data_types.schema.yml +++ b/core/config/schema/core.data_types.schema.yml @@ -445,9 +445,6 @@ field.storage_settings.string: case_sensitive: type: boolean label: 'Case sensitive' - is_ascii: - type: boolean - label: 'Contains US ASCII characters only' field.field_settings.string: type: mapping diff --git a/core/lib/Drupal/Core/Cache/DatabaseBackend.php b/core/lib/Drupal/Core/Cache/DatabaseBackend.php index ff12845a78a..81e83bb0a11 100644 --- a/core/lib/Drupal/Core/Cache/DatabaseBackend.php +++ b/core/lib/Drupal/Core/Cache/DatabaseBackend.php @@ -422,26 +422,22 @@ class DatabaseBackend implements CacheBackendInterface { } /** - * Normalizes a cache ID in order to comply with database limitations. + * Ensures that cache IDs have a maximum length of 255 characters. * * @param string $cid * The passed in cache ID. * * @return string - * An ASCII-encoded cache ID that is at most 255 characters long. + * A cache ID that is at most 255 characters long. */ protected function normalizeCid($cid) { - // Nothing to do if the ID is a US ASCII string of 255 characters or less. - $cid_is_ascii = mb_check_encoding($cid, 'ASCII'); - if (strlen($cid) <= 255 && $cid_is_ascii) { + // Nothing to do if the ID length is 255 characters or less. + if (strlen($cid) <= 255) { return $cid; } // Return a string that uses as much as possible of the original cache ID // with the hash appended. $hash = Crypt::hashBase64($cid); - if (!$cid_is_ascii) { - return $hash; - } return substr($cid, 0, 255 - strlen($hash)) . $hash; } @@ -454,7 +450,7 @@ class DatabaseBackend implements CacheBackendInterface { 'fields' => array( 'cid' => array( 'description' => 'Primary Key: Unique cache ID.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', @@ -495,7 +491,7 @@ class DatabaseBackend implements CacheBackendInterface { ), 'checksum' => array( 'description' => 'The tag invalidation checksum when this entry was saved.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, ), diff --git a/core/lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php b/core/lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php index 14b34ec0add..cc882eead16 100644 --- a/core/lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php +++ b/core/lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php @@ -175,7 +175,7 @@ class DatabaseCacheTagsChecksum implements CacheTagsChecksumInterface, CacheTags 'fields' => array( 'tag' => array( 'description' => 'Namespace-prefixed tag string.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', diff --git a/core/lib/Drupal/Core/Config/DatabaseStorage.php b/core/lib/Drupal/Core/Config/DatabaseStorage.php index 646a1d54a2d..6c332731948 100644 --- a/core/lib/Drupal/Core/Config/DatabaseStorage.php +++ b/core/lib/Drupal/Core/Config/DatabaseStorage.php @@ -192,14 +192,14 @@ class DatabaseStorage implements StorageInterface { 'fields' => array( 'collection' => array( 'description' => 'Primary Key: Config object collection.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'name' => array( 'description' => 'Primary Key: Config object name.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php index 8237c79112c..d0aba49bac8 100644 --- a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php @@ -144,10 +144,6 @@ class Schema extends DatabaseSchema { if (!empty($spec['binary'])) { $sql .= ' BINARY'; } - // Note we check for the "type" key here. "mysql_type" is VARCHAR: - if (isset($spec['type']) && $spec['type'] == 'varchar_ascii') { - $sql .= ' CHARACTER SET ascii COLLATE ascii_general_ci'; - } } elseif (isset($spec['precision']) && isset($spec['scale'])) { $sql .= '(' . $spec['precision'] . ', ' . $spec['scale'] . ')'; @@ -222,8 +218,6 @@ class Schema extends DatabaseSchema { // database types back into schema types. // $map does not use drupal_static as its value never changes. static $map = array( - 'varchar_ascii:normal' => 'VARCHAR', - 'varchar:normal' => 'VARCHAR', 'char:normal' => 'CHAR', diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php index 040b32a7bd9..506baa8e1f6 100644 --- a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php @@ -363,8 +363,6 @@ class Schema extends DatabaseSchema { // database types back into schema types. // $map does not use drupal_static as its value never changes. static $map = array( - 'varchar_ascii:normal' => 'varchar', - 'varchar:normal' => 'varchar', 'char:normal' => 'character', diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php index 154470dfec2..fe3f877289a 100644 --- a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php +++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php @@ -212,8 +212,6 @@ class Schema extends DatabaseSchema { // database types back into schema types. // $map does not use drupal_static as its value never changes. static $map = array( - 'varchar_ascii:normal' => 'VARCHAR', - 'varchar:normal' => 'VARCHAR', 'char:normal' => 'CHAR', diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php index b0669697aa1..6fb4ddfd1a7 100644 --- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php +++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorageSchema.php @@ -1568,7 +1568,7 @@ class SqlContentEntityStorageSchema implements DynamicallyFieldableEntityStorage } else { $id_schema = array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'description' => 'The entity id this data is attached to', @@ -1601,7 +1601,7 @@ class SqlContentEntityStorageSchema implements DynamicallyFieldableEntityStorage 'description' => $description_current, 'fields' => array( 'bundle' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', @@ -1617,7 +1617,7 @@ class SqlContentEntityStorageSchema implements DynamicallyFieldableEntityStorage 'entity_id' => $id_schema, 'revision_id' => $revision_id_schema, 'langcode' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php index 21d70906b21..ca54aa85cdd 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php @@ -133,7 +133,7 @@ class EntityReferenceItem extends FieldItemBase { $columns = array( 'target_id' => array( 'description' => 'The ID of the target entity.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', // If the target entities act as bundles for another entity type, // their IDs should not exceed the maximum length for bundles. 'length' => $target_type_info->getBundleOf() ? EntityTypeInterface::BUNDLE_MAX_LENGTH : 255, diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php index b7ce7fb790a..9ab60a4d485 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/LanguageItem.php @@ -44,7 +44,6 @@ class LanguageItem extends FieldItemBase { public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) { $properties['value'] = DataDefinition::create('string') ->setLabel(t('Language code')) - ->setSetting('is_ascii', TRUE) ->setRequired(TRUE); $properties['language'] = DataReferenceDefinition::create('language') @@ -76,7 +75,6 @@ class LanguageItem extends FieldItemBase { 'value' => array( 'type' => 'varchar', 'length' => 12, - 'is_ascii' => TRUE, ), ), ); diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php index 2329c86ca6b..8817c876823 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php @@ -32,7 +32,6 @@ class StringItem extends StringItemBase { public static function defaultStorageSettings() { return array( 'max_length' => 255, - 'is_ascii' => FALSE, ) + parent::defaultStorageSettings(); } @@ -43,7 +42,7 @@ class StringItem extends StringItemBase { return array( 'columns' => array( 'value' => array( - 'type' => $field_definition->getSetting('is_ascii') === TRUE ? 'varchar_ascii' : 'varchar', + 'type' => 'varchar', 'length' => (int) $field_definition->getSetting('max_length'), 'binary' => $field_definition->getSetting('case_sensitive'), ), diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php index 1bdd10e76ab..84d1ec582b7 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php @@ -30,7 +30,6 @@ class UuidItem extends StringItem { public static function defaultStorageSettings() { return array( 'max_length' => 128, - 'is_ascii' => TRUE, ) + parent::defaultStorageSettings(); } diff --git a/core/lib/Drupal/Core/Menu/MenuTreeStorage.php b/core/lib/Drupal/Core/Menu/MenuTreeStorage.php index 659d6be3926..2ce68f77892 100644 --- a/core/lib/Drupal/Core/Menu/MenuTreeStorage.php +++ b/core/lib/Drupal/Core/Menu/MenuTreeStorage.php @@ -1193,7 +1193,7 @@ class MenuTreeStorage implements MenuTreeStorageInterface { 'fields' => array( 'menu_name' => array( 'description' => "The menu name. All links with the same menu name (such as 'tools') are part of the same menu.", - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', @@ -1206,20 +1206,20 @@ class MenuTreeStorage implements MenuTreeStorageInterface { ), 'id' => array( 'description' => 'Unique machine name: the plugin ID.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, ), 'parent' => array( 'description' => 'The plugin ID for the parent of this link.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'route_name' => array( 'description' => 'The machine name of a defined Symfony Route this menu item represents.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, ), 'route_param_key' => array( @@ -1281,7 +1281,7 @@ class MenuTreeStorage implements MenuTreeStorageInterface { ), 'provider' => array( 'description' => 'The name of the module that generated this link.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => DRUPAL_EXTENSION_NAME_MAX_LENGTH, 'not null' => TRUE, 'default' => 'system', diff --git a/core/modules/aggregator/src/Entity/Feed.php b/core/modules/aggregator/src/Entity/Feed.php index a5ed08166f7..6f3d2e2dbe8 100644 --- a/core/modules/aggregator/src/Entity/Feed.php +++ b/core/modules/aggregator/src/Entity/Feed.php @@ -226,7 +226,6 @@ class Feed extends ContentEntityBase implements FeedInterface { $fields['hash'] = BaseFieldDefinition::create('string') ->setLabel(t('Hash')) - ->setSetting('is_ascii', TRUE) ->setDescription(t('Calculated hash of the feed data, used for validating cache.')); $fields['etag'] = BaseFieldDefinition::create('string') diff --git a/core/modules/aggregator/src/FeedInterface.php b/core/modules/aggregator/src/FeedInterface.php index e678c90e4c8..29c6782e37a 100644 --- a/core/modules/aggregator/src/FeedInterface.php +++ b/core/modules/aggregator/src/FeedInterface.php @@ -170,8 +170,7 @@ interface FeedInterface extends ContentEntityInterface { * Sets the calculated hash of the feed data, used for validating cache. * * @param string $hash - * A string containing the calculated hash of the feed. Must contain - * US ASCII characters only. + * A string containing the calculated hash of the feed. * * @return \Drupal\aggregator\FeedInterface * The class instance that this method is called on. diff --git a/core/modules/ban/ban.install b/core/modules/ban/ban.install index b2ea1fe3d33..7a5494fa781 100644 --- a/core/modules/ban/ban.install +++ b/core/modules/ban/ban.install @@ -20,7 +20,7 @@ function ban_schema() { ), 'ip' => array( 'description' => 'IP address', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 40, 'not null' => TRUE, 'default' => '', diff --git a/core/modules/comment/comment.install b/core/modules/comment/comment.install index 327feff349a..64aa6bd78f2 100644 --- a/core/modules/comment/comment.install +++ b/core/modules/comment/comment.install @@ -46,14 +46,14 @@ function comment_schema() { 'description' => 'The entity_id of the entity for which the statistics are compiled.', ), 'entity_type' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'not null' => TRUE, 'default' => 'node', 'length' => EntityTypeInterface::ID_MAX_LENGTH, 'description' => 'The entity_type of the entity to which this comment is a reply.', ), 'field_name' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'not null' => TRUE, 'default' => '', 'length' => FieldStorageConfig::NAME_MAX_LENGTH, diff --git a/core/modules/comment/src/Entity/Comment.php b/core/modules/comment/src/Entity/Comment.php index f83f54b58c0..798a69f1cf4 100644 --- a/core/modules/comment/src/Entity/Comment.php +++ b/core/modules/comment/src/Entity/Comment.php @@ -303,7 +303,6 @@ class Comment extends ContentEntityBase implements CommentInterface { $fields['entity_type'] = BaseFieldDefinition::create('string') ->setLabel(t('Entity type')) ->setDescription(t('The entity type to which this comment is attached.')) - ->setSetting('is_ascii', TRUE) ->setSetting('max_length', EntityTypeInterface::ID_MAX_LENGTH); $fields['comment_type'] = BaseFieldDefinition::create('entity_reference') @@ -314,7 +313,6 @@ class Comment extends ContentEntityBase implements CommentInterface { $fields['field_name'] = BaseFieldDefinition::create('string') ->setLabel(t('Comment field name')) ->setDescription(t('The field name through which this comment was added.')) - ->setSetting('is_ascii', TRUE) ->setSetting('max_length', FieldStorageConfig::NAME_MAX_LENGTH); return $fields; diff --git a/core/modules/dblog/dblog.install b/core/modules/dblog/dblog.install index 1119c47dbfa..b7454c13341 100644 --- a/core/modules/dblog/dblog.install +++ b/core/modules/dblog/dblog.install @@ -25,7 +25,7 @@ function dblog_schema() { 'description' => 'The {users}.uid of the user who triggered the event.', ), 'type' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => '', @@ -69,7 +69,7 @@ function dblog_schema() { 'description' => 'URL of referring page.', ), 'hostname' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', diff --git a/core/modules/file/file.install b/core/modules/file/file.install index fd3503c2834..6e188c6a562 100644 --- a/core/modules/file/file.install +++ b/core/modules/file/file.install @@ -20,21 +20,21 @@ function file_schema() { ), 'module' => array( 'description' => 'The name of the module that is using the file.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => DRUPAL_EXTENSION_NAME_MAX_LENGTH, 'not null' => TRUE, 'default' => '', ), 'type' => array( 'description' => 'The name of the object type in which the file is used.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => '', ), 'id' => array( 'description' => 'The primary key of the object using the file.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => 0, diff --git a/core/modules/file/src/Entity/File.php b/core/modules/file/src/Entity/File.php index ff38ab320ae..42de0ae94e8 100644 --- a/core/modules/file/src/Entity/File.php +++ b/core/modules/file/src/Entity/File.php @@ -254,7 +254,6 @@ class File extends ContentEntityBase implements FileInterface { $fields['filemime'] = BaseFieldDefinition::create('string') ->setLabel(t('File MIME type')) - ->setSetting('is_ascii', TRUE) ->setDescription(t("The file's MIME type.")); $fields['filesize'] = BaseFieldDefinition::create('integer') diff --git a/core/modules/locale/locale.install b/core/modules/locale/locale.install index 02587670627..81aadf534b4 100644 --- a/core/modules/locale/locale.install +++ b/core/modules/locale/locale.install @@ -67,14 +67,14 @@ function locale_schema() { 'description' => 'The original string in English.', ), 'context' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', 'description' => 'The context this string applies to.', ), 'version' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 20, 'not null' => TRUE, 'default' => 'none', @@ -103,7 +103,7 @@ function locale_schema() { 'description' => 'Translation string value in this language.', ), 'language' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '', @@ -142,7 +142,7 @@ function locale_schema() { 'description' => 'Unique identifier of this string.', ), 'type' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 50, 'not null' => TRUE, 'default' => '', @@ -156,7 +156,7 @@ function locale_schema() { 'description' => 'Type dependent location information (file name, path, etc).', ), 'version' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 20, 'not null' => TRUE, 'default' => 'none', @@ -180,14 +180,14 @@ function locale_schema() { 'description' => 'File import status information for interface translation files.', 'fields' => array( 'project' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', 'description' => 'A unique short name to identify the project the file belongs to.', ), 'langcode' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => '12', 'not null' => TRUE, 'default' => '', diff --git a/core/modules/menu_link_content/src/Entity/MenuLinkContent.php b/core/modules/menu_link_content/src/Entity/MenuLinkContent.php index d6610a0e15d..5570a2a50ed 100644 --- a/core/modules/menu_link_content/src/Entity/MenuLinkContent.php +++ b/core/modules/menu_link_content/src/Entity/MenuLinkContent.php @@ -250,7 +250,6 @@ class MenuLinkContent extends ContentEntityBase implements MenuLinkContentInterf ->setLabel(t('Bundle')) ->setDescription(t('The content menu link bundle.')) ->setSetting('max_length', EntityTypeInterface::BUNDLE_MAX_LENGTH) - ->setSetting('is_ascii', TRUE) ->setReadOnly(TRUE); $fields['title'] = BaseFieldDefinition::create('string') @@ -292,8 +291,7 @@ class MenuLinkContent extends ContentEntityBase implements MenuLinkContentInterf $fields['menu_name'] = BaseFieldDefinition::create('string') ->setLabel(t('Menu name')) ->setDescription(t('The menu name. All links with the same menu name (such as "tools") are part of the same menu.')) - ->setDefaultValue('tools') - ->setSetting('is_ascii', TRUE); + ->setDefaultValue('tools'); $fields['link'] = BaseFieldDefinition::create('link') ->setLabel(t('Link')) diff --git a/core/modules/node/node.install b/core/modules/node/node.install index a7cb55e0c01..fa0d245c363 100644 --- a/core/modules/node/node.install +++ b/core/modules/node/node.install @@ -54,7 +54,7 @@ function node_schema() { ), 'langcode' => array( 'description' => 'The {language}.langcode of this node.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '', @@ -75,7 +75,7 @@ function node_schema() { ), 'realm' => array( 'description' => 'The realm in which the user must possess the grant ID. Each node access node can define one or more realms.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', diff --git a/core/modules/search/search.install b/core/modules/search/search.install index f920aa5ae99..a298f2f9316 100644 --- a/core/modules/search/search.install +++ b/core/modules/search/search.install @@ -20,14 +20,14 @@ function search_schema() { 'description' => 'Search item ID, e.g. node ID for nodes.', ), 'langcode' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => '12', 'not null' => TRUE, 'description' => 'The {languages}.langcode of the item variant.', 'default' => '', ), 'type' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'description' => 'Type of item, e.g. node.', @@ -67,14 +67,14 @@ function search_schema() { 'description' => 'The {search_dataset}.sid of the searchable item to which the word belongs.', ), 'langcode' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => '12', 'not null' => TRUE, 'description' => 'The {languages}.langcode of the item variant.', 'default' => '', ), 'type' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'description' => 'The {search_dataset}.type of the searchable item to which the word belongs.', diff --git a/core/modules/shortcut/shortcut.install b/core/modules/shortcut/shortcut.install index 73986b81782..b046142043b 100644 --- a/core/modules/shortcut/shortcut.install +++ b/core/modules/shortcut/shortcut.install @@ -20,7 +20,7 @@ function shortcut_schema() { 'description' => 'The {users}.uid for this set.', ), 'set_name' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', diff --git a/core/modules/simpletest/simpletest.install b/core/modules/simpletest/simpletest.install index b4792ea1d92..47c0ee2bd40 100644 --- a/core/modules/simpletest/simpletest.install +++ b/core/modules/simpletest/simpletest.install @@ -108,7 +108,7 @@ function simpletest_schema() { 'description' => 'Test ID, messages belonging to the same ID are reported together', ), 'test_class' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', @@ -127,14 +127,14 @@ function simpletest_schema() { 'description' => 'The message itself.', ), 'message_group' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', 'description' => 'The message group this message belongs to. For example: warning, browser, user.', ), 'function' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', diff --git a/core/modules/system/database.api.php b/core/modules/system/database.api.php index f3d7fe2120f..a01ff5992f1 100644 --- a/core/modules/system/database.api.php +++ b/core/modules/system/database.api.php @@ -256,8 +256,6 @@ * 'float', 'numeric', or 'serial'. Most types just map to the according * database engine specific datatypes. Use 'serial' for auto incrementing * fields. This will expand to 'INT auto_increment' on MySQL. - * A special 'varchar_ascii' type is also available for limiting machine - * name field to US ASCII characters. * - 'mysql_type', 'pgsql_type', 'sqlite_type', etc.: If you need to * use a record type not included in the officially supported list * of types above, you can specify a type for each database diff --git a/core/modules/system/src/Tests/Cache/DatabaseBackendUnitTest.php b/core/modules/system/src/Tests/Cache/DatabaseBackendUnitTest.php index e182cc0b104..e54198ba5cc 100644 --- a/core/modules/system/src/Tests/Cache/DatabaseBackendUnitTest.php +++ b/core/modules/system/src/Tests/Cache/DatabaseBackendUnitTest.php @@ -33,24 +33,4 @@ class DatabaseBackendUnitTest extends GenericCacheBackendUnitTestBase { return new DatabaseBackend($this->container->get('database'), $this->container->get('cache_tags.invalidator.checksum'), $bin); } - /** - * {@inheritdoc} - */ - public function testSetGet() { - parent::testSetGet(); - $backend = $this->getCacheBackend(); - - // Set up a cache ID that is not ASCII and longer than 255 characters so we - // can test cache ID normalization. - $cid_long = str_repeat('愛€', 500); - $cached_value_long = $this->randomMachineName(); - $backend->set($cid_long, $cached_value_long); - $this->assertIdentical($cached_value_long, $backend->get($cid_long)->data, "Backend contains the correct value for long, non-ASCII cache id."); - - $cid_short = '愛1€'; - $cached_value_short = $this->randomMachineName(); - $backend->set($cid_short, $cached_value_short); - $this->assertIdentical($cached_value_short, $backend->get($cid_short)->data, "Backend contains the correct value for short, non-ASCII cache id."); - } - } diff --git a/core/modules/system/src/Tests/Database/SchemaTest.php b/core/modules/system/src/Tests/Database/SchemaTest.php index 46b591cd5a2..7811b505b27 100644 --- a/core/modules/system/src/Tests/Database/SchemaTest.php +++ b/core/modules/system/src/Tests/Database/SchemaTest.php @@ -49,11 +49,6 @@ class SchemaTest extends KernelTestBase { 'default' => "'\"funky default'\"", 'description' => 'Schema column description for string.', ), - 'test_field_string_ascii' => array( - 'type' => 'varchar_ascii', - 'length' => 255, - 'description' => 'Schema column description for ASCII string.', - ), ), ); db_create_table('test_table', $table_specification); @@ -67,19 +62,6 @@ class SchemaTest extends KernelTestBase { // Assert that the column comment has been set. $this->checkSchemaComment($table_specification['fields']['test_field']['description'], 'test_table', 'test_field'); - // Make sure that varchar fields have the correct collation. - $columns = db_query('SHOW FULL COLUMNS FROM {test_table}'); - foreach ($columns as $column) { - if ($column->Field == 'test_field_string') { - $string_check = ($column->Collation == 'utf8_general_ci'); - } - if ($column->Field == 'test_field_string_ascii') { - $string_ascii_check = ($column->Collation == 'ascii_general_ci'); - } - } - $this->assertTrue(!empty($string_check), 'string field has the right collation.'); - $this->assertTrue(!empty($string_ascii_check), 'ASCII string field has the right collation.'); - // An insert without a value for the column 'test_table' should fail. $this->assertFalse($this->tryInsert(), 'Insert without a default failed.'); diff --git a/core/modules/system/system.install b/core/modules/system/system.install index 6c3db4608c9..082bbc67938 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -685,7 +685,7 @@ function system_schema() { ), 'token' => array( 'description' => "A string token generated against the current user's session id and the batch id, used to ensure that only the user who submitted the batch can effectively access it.", - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, ), @@ -717,14 +717,14 @@ function system_schema() { ), 'event' => array( 'description' => 'Name of event (e.g. contact).', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => '', ), 'identifier' => array( 'description' => 'Identifier of the visitor, such as an IP address or hostname.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', @@ -754,14 +754,14 @@ function system_schema() { 'fields' => array( 'collection' => array( 'description' => 'A named collection of key and value pairs.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', ), 'name' => array( 'description' => 'The key of the key-value pair. As KEY is a SQL reserved keyword, name was chosen instead.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', @@ -781,7 +781,7 @@ function system_schema() { 'fields' => array( 'collection' => array( 'description' => 'A named collection of key and value pairs.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', @@ -789,7 +789,7 @@ function system_schema() { 'name' => array( // KEY is an SQL reserved word, so use 'name' as the key's field name. 'description' => 'The key of the key/value pair.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', @@ -824,7 +824,7 @@ function system_schema() { 'description' => 'Primary Key: Unique item ID.', ), 'name' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', @@ -862,7 +862,7 @@ function system_schema() { 'fields' => array( 'name' => array( 'description' => 'Primary Key: Machine name of this route', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', @@ -911,14 +911,14 @@ function system_schema() { 'fields' => array( 'name' => array( 'description' => 'Primary Key: Unique name.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '' ), 'value' => array( 'description' => 'A value for the semaphore.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '' @@ -961,13 +961,13 @@ function system_schema() { ), 'sid' => array( 'description' => "A session ID (hashed). The value is generated by Drupal's session handlers.", - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, ), 'hostname' => array( 'description' => 'The IP address that last used this session ID (sid).', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', @@ -1025,7 +1025,7 @@ function system_schema() { ), 'langcode' => array( 'description' => "The language code this alias is for; if 'und', the alias will be used for unknown languages. Each Drupal path can have an alias for each supported language.", - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => '', diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php index 9a2419497f1..c55953c6875 100644 --- a/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php +++ b/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php @@ -34,7 +34,7 @@ class TextLongItem extends TextItemBase { 'size' => 'big', ), 'format' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, ), ), diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php index 413ad4797e3..48d4dacf824 100644 --- a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php +++ b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php @@ -68,7 +68,7 @@ class TextWithSummaryItem extends TextItemBase { 'size' => 'big', ), 'format' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 255, ), ), diff --git a/core/modules/user/user.install b/core/modules/user/user.install index dd55b49398c..7b3c3d3a393 100644 --- a/core/modules/user/user.install +++ b/core/modules/user/user.install @@ -21,14 +21,14 @@ function user_schema() { ), 'module' => array( 'description' => 'The name of the module declaring the variable.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => DRUPAL_EXTENSION_NAME_MAX_LENGTH, 'not null' => TRUE, 'default' => '', ), 'name' => array( 'description' => 'The identifier of the data.', - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', diff --git a/core/modules/views/src/EntityViewsData.php b/core/modules/views/src/EntityViewsData.php index 5cd321531c3..fa1cf3efc2a 100644 --- a/core/modules/views/src/EntityViewsData.php +++ b/core/modules/views/src/EntityViewsData.php @@ -411,7 +411,6 @@ class EntityViewsData implements EntityHandlerInterface, EntityViewsDataInterfac case 'char': case 'string': case 'varchar': - case 'varchar_ascii': case 'tinytext': case 'text': case 'mediumtext': diff --git a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php index e67b8e6a875..08f73cb4d08 100644 --- a/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/Sql/SqlContentEntityStorageSchemaTest.php @@ -802,7 +802,7 @@ class SqlContentEntityStorageSchemaTest extends UnitTestCase { 'description' => "Data storage for $entity_type_id field $field_name.", 'fields' => array( 'bundle' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => true, 'default' => '', @@ -828,7 +828,7 @@ class SqlContentEntityStorageSchemaTest extends UnitTestCase { 'description' => 'The entity revision id this data is attached to, which for an unversioned entity type is the same as the entity id', ), 'langcode' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 32, 'not null' => true, 'default' => '', @@ -947,7 +947,7 @@ class SqlContentEntityStorageSchemaTest extends UnitTestCase { 'description' => "Data storage for $entity_type_id field $field_name.", 'fields' => array( 'bundle' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => true, 'default' => '', @@ -961,19 +961,19 @@ class SqlContentEntityStorageSchemaTest extends UnitTestCase { 'description' => 'A boolean indicating whether this data item has been deleted', ), 'entity_id' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => true, 'description' => 'The entity id this data is attached to', ), 'revision_id' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 128, 'not null' => true, 'description' => 'The entity revision id this data is attached to, which for an unversioned entity type is the same as the entity id', ), 'langcode' => array( - 'type' => 'varchar_ascii', + 'type' => 'varchar', 'length' => 32, 'not null' => true, 'default' => '',