aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
diff options
context:
space:
mode:
authorAli Ibrahim <aibrahim2k2@gmail.com>2019-04-10 14:13:21 -0400
committerAli Ibrahim <aibrahim2k2@gmail.com>2019-04-11 12:57:19 -0400
commit6584fb3939dd3892834ed93fa791064d5299cda2 (patch)
treeaa6b25c50f13e543c3eeb35d5f44209d212f6a62 /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
parentb86f32bc8529caa767e166aa10725a0fe1add7b5 (diff)
downloadrails-6584fb3939dd3892834ed93fa791064d5299cda2.tar.gz
rails-6584fb3939dd3892834ed93fa791064d5299cda2.tar.bz2
rails-6584fb3939dd3892834ed93fa791064d5299cda2.zip
Cache full MySQL version in schema cache
* The database version is cached in all the adapters, but this didn't include the full MySQL version. Anything that uses the full MySQL version would need to query the database to get that data even if they're using the schema cache. * Now the full MySQL version will be cached in the schema cache via the Version object.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb14
1 files changed, 11 insertions, 3 deletions
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 ca8bbc14da..75bc94c49c 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -51,12 +51,20 @@ module ActiveRecord
end
end
+ class Version < AbstractAdapter::Version # :nodoc:
+ def initialize(version_string, full_version_string)
+ super
+ end
+ end
+
def initialize(connection, logger, connection_options, config)
super(connection, logger, config)
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:
@@ -801,8 +809,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) # :nodoc:
+ full_version_string.match(/^(?:5\.5\.5-)?(\d+\.\d+\.\d+)/)[1]
end
class MysqlString < Type::String # :nodoc: