diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2019-04-16 16:37:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-16 16:37:51 +0200 |
commit | dc2d19b8bf693886bec520c1787166eb105c8567 (patch) | |
tree | 0352d712553270ad9b1355027843cf3229f46685 /activerecord/lib/active_record/connection_adapters | |
parent | f87d518809541d2c89acdb36d5a2a96cab3ab50b (diff) | |
parent | b381e43a12fdf10c93f45939b4fa4689cfbda559 (diff) | |
download | rails-dc2d19b8bf693886bec520c1787166eb105c8567.tar.gz rails-dc2d19b8bf693886bec520c1787166eb105c8567.tar.bz2 rails-dc2d19b8bf693886bec520c1787166eb105c8567.zip |
Merge pull request #35946 from alimi/cache-full-mysql-database-version
Cache full MySQL version in schema cache
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
3 files changed, 14 insertions, 5 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 200184c2f9..bf0bb84c93 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -170,8 +170,11 @@ module ActiveRecord class Version include Comparable - def initialize(version_string) + attr_reader :full_version_string + + def initialize(version_string, full_version_string = nil) @version = version_string.split(".").map(&:to_i) + @full_version_string = full_version_string end def <=>(version_string) diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index 8b907759c6..282b2b1838 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -56,7 +56,9 @@ module ActiveRecord end def get_database_version #:nodoc: - Version.new(version_string) + full_version_string = get_full_version + version_string = version_string(full_version_string) + Version.new(version_string, full_version_string) end def mariadb? # :nodoc: @@ -788,8 +790,8 @@ module ActiveRecord MismatchedForeignKey.new(options) end - def version_string - full_version.match(/^(?:5\.5\.5-)?(\d+\.\d+\.\d+)/)[1] + def version_string(full_version_string) + full_version_string.match(/^(?:5\.5\.5-)?(\d+\.\d+\.\d+)/)[1] end class MysqlString < Type::String # :nodoc: diff --git a/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb index 0dc880c731..5b0335c22b 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb @@ -126,7 +126,11 @@ module ActiveRecord end def full_version - @full_version ||= @connection.server_info[:version] + schema_cache.database_version.full_version_string + end + + def get_full_version + @connection.server_info[:version] end end end |