Class: ActiveRecord::Health::Adapters::MySQLAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/activerecord/health/adapters/mysql_adapter.rb

Constant Summary collapse

PERFORMANCE_SCHEMA_MIN_VERSION =
Gem::Version.new("8.0.22")

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version_string) ⇒ MySQLAdapter

Returns a new instance of MySQLAdapter.



16
17
18
# File 'lib/activerecord/health/adapters/mysql_adapter.rb', line 16

def initialize(version_string)
  @version_string = version_string
end

Instance Attribute Details

#version_stringObject (readonly)

Returns the value of attribute version_string.



9
10
11
# File 'lib/activerecord/health/adapters/mysql_adapter.rb', line 9

def version_string
  @version_string
end

Class Method Details

.build(connection) ⇒ Object



11
12
13
14
# File 'lib/activerecord/health/adapters/mysql_adapter.rb', line 11

def self.build(connection)
  version = connection.select_value("SELECT VERSION()")
  new(version)
end

Instance Method Details

#active_session_count_queryObject



24
25
26
# File 'lib/activerecord/health/adapters/mysql_adapter.rb', line 24

def active_session_count_query
  uses_performance_schema? ? performance_schema_query : information_schema_query
end

#execute_with_timeout(connection, query, timeout) ⇒ Object



32
33
34
35
36
37
# File 'lib/activerecord/health/adapters/mysql_adapter.rb', line 32

def execute_with_timeout(connection, query, timeout)
  connection.transaction do
    connection.execute("SET max_execution_time = #{timeout * 1000}")
    connection.select_value(query)
  end
end

#nameObject



20
21
22
# File 'lib/activerecord/health/adapters/mysql_adapter.rb', line 20

def name
  :mysql
end

#uses_performance_schema?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/activerecord/health/adapters/mysql_adapter.rb', line 28

def uses_performance_schema?
  !mariadb? && mysql_version >= PERFORMANCE_SCHEMA_MIN_VERSION
end