diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2018-12-19 08:38:12 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2018-12-19 08:38:12 +0900 |
commit | 0fa5b5510c6faefc33ab3715e08b2604195a1063 (patch) | |
tree | 563ed97cfd1fc4c4584d3016ac05c27bbf5a2e3a /activerecord/lib/active_record/connection_adapters/mysql | |
parent | 5b5319413a611c949cb796351ff42fa0c0299252 (diff) | |
download | rails-0fa5b5510c6faefc33ab3715e08b2604195a1063.tar.gz rails-0fa5b5510c6faefc33ab3715e08b2604195a1063.tar.bz2 rails-0fa5b5510c6faefc33ab3715e08b2604195a1063.zip |
Use `utf8mb4` charset for internal tables if the row format `DYNAMIC` by default
The indexing issue on `utf8mb4` columns is resolved since MySQL 5.7.9.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/mysql')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb index 4894fd1c08..66db4e4149 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb @@ -79,7 +79,7 @@ module ActiveRecord def internal_string_options_for_primary_key super.tap do |options| - if CHARSETS_OF_4BYTES_MAXLEN.include?(charset) && (mariadb? || version < "8.0.0") + if !row_format_dynamic_by_default? && CHARSETS_OF_4BYTES_MAXLEN.include?(charset) options[:collation] = collation.sub(/\A[^_]+/, "utf8") end end @@ -96,6 +96,14 @@ module ActiveRecord private CHARSETS_OF_4BYTES_MAXLEN = ["utf8mb4", "utf16", "utf16le", "utf32"] + def row_format_dynamic_by_default? + if mariadb? + version >= "10.2.2" + else + version >= "5.7.9" + end + end + def schema_creation MySQL::SchemaCreation.new(self) end |