Module: ActiveRecord::ConnectionAdapters::AuroraServerless::Mysql2::Client

Included in:
Client
Defined in:
lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb

Constant Summary collapse

ESCAPE_MAP =
{
  "\x00" => "0",
  "\n"   => "n",
  "\r"   => "r",
  "\\"   => "\\",
  "'"    => "'",
  '"'    => '"'
}.freeze
ESCAPE_PATTERN =
Regexp.union(*ESCAPE_MAP.keys)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.default_query_optionsObject



21
22
23
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 21

def self.default_query_options
  {}
end

Instance Method Details

#abandon_results!Object



62
63
64
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 62

def abandon_results!
  nil
end

#automatic_close=Object



47
48
49
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 47

def automatic_close=(*)
  nil
end

#closeObject



43
44
45
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 43

def close
  @closed = true
end

#escape(string) ⇒ Object



51
52
53
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 51

def escape(string)
  string.gsub(ESCAPE_PATTERN) { |x| "\\#{ESCAPE_MAP[x]}" }
end

#pingObject



55
56
57
58
59
60
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 55

def ping
  return false if @closed
  query('SELECT 1').to_a.first.first == 1
rescue
  false
end

#query(sql) ⇒ Object

Raises:

  • (ActiveRecord::StatementInvalid)


29
30
31
32
33
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 29

def query(sql)
  raise ActiveRecord::StatementInvalid if @closed
  result = execute_statement(sql)
  AuroraServerless::Mysql2::Result.new(result)
end

#query_optionsObject



25
26
27
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 25

def query_options
  {}
end

#server_infoObject



35
36
37
38
39
40
41
# File 'lib/active_record/connection_adapters/aurora_serverless/mysql2/client.rb', line 35

def server_info
  @server_info || begin
    r = query 'SHOW VARIABLES LIKE "version"'
    version = r.to_a.detect{ |r| r.detect { |v| v == 'version' } }.last
    { version: version }
  end
end