Class: ActiveRecord::ConnectionAdapters::Rails80DepartureAdapter
- Inherits:
-
AbstractMysqlAdapter
- Object
- AbstractMysqlAdapter
- ActiveRecord::ConnectionAdapters::Rails80DepartureAdapter
- Extended by:
- Forwardable
- Includes:
- Mysql2::DatabaseStatements, ForAlterStatements
- Defined in:
- lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb
Defined Under Namespace
Classes: Column, SchemaCreation
Constant Summary collapse
- TYPE_MAP =
Type::TypeMap.new.tap { |m| initialize_type_map(m) }
- ADAPTER_NAME =
'Percona'.freeze
Class Method Summary collapse
Instance Method Summary collapse
-
#add_index(table_name, column_name, options = {}) ⇒ Object
Adds a new index to the table.
- #change_table(table_name, _options = {}) {|update_table_definition(table_name, recorder)| ... } ⇒ Object
- #exec_delete(sql, name, binds) ⇒ Object (also: #exec_update)
-
#exec_insert(sql, name, binds, pky = nil, sequence_name = nil, returning: nil) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument, Metrics/ParameterLists.
- #full_version ⇒ Object
-
#get_full_version ⇒ Object
rubocop:disable Naming/AccessorMethodName.
-
#initialize(config) ⇒ Rails80DepartureAdapter
constructor
A new instance of Rails80DepartureAdapter.
-
#internal_exec_query(sql, name = 'SQL', _binds = [], **_kwargs) ⇒ Object
(also: #exec_query)
:nodoc:.
- #last_inserted_id(result) ⇒ Object
- #new_column ⇒ Object
-
#remove_index(table_name, column_name = nil, **options) ⇒ Object
Remove the given index from the table.
- #schema_creation ⇒ Object
-
#select(sql, name = nil, binds = [], **kwargs) ⇒ Object
Executes a SELECT query and returns an array of record hashes with the column names as keys and column values as values.
-
#select_rows(arel, name = nil, binds = []) ⇒ Object
Executes a SELECT query and returns an array of rows.
-
#supports_migrations? ⇒ Boolean
Returns true, as this adapter supports migrations.
-
#write_query?(sql) ⇒ Boolean
:nodoc:.
Methods included from ForAlterStatements
#add_column_for_alter, #add_index_for_alter, #add_timestamps_for_alter, #bulk_change_table, #change_column_for_alter, included, #remove_column_for_alter, #remove_columns_for_alter, #remove_index_for_alter, #remove_timestamps_for_alter, #rename_column_for_alter
Constructor Details
#initialize(config) ⇒ Rails80DepartureAdapter
Returns a new instance of Rails80DepartureAdapter.
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 59 def initialize(config) super @config[:flags] ||= 0 if @config[:flags].is_a? Array @config[:flags].push 'FOUND_ROWS' else @config[:flags] |= ::Mysql2::Client::FOUND_ROWS end @prepared_statements = false end |
Class Method Details
.new_client(config) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 41 def self.new_client(config) connection_details = Departure::ConnectionDetails.new(config) verbose = ActiveRecord::Migration.verbose sanitizers = [ Departure::LogSanitizers::PasswordSanitizer.new(connection_details) ] percona_logger = Departure::LoggerFactory.build(sanitizers: sanitizers, verbose: verbose) cli_generator = Departure::CliGenerator.new(connection_details) mysql_adapter = ActiveRecord::ConnectionAdapters::Mysql2Adapter.new(config.merge(adapter: 'mysql2')) Departure::Runner.new( percona_logger, cli_generator, mysql_adapter ) end |
Instance Method Details
#add_index(table_name, column_name, options = {}) ⇒ Object
Adds a new index to the table
124 125 126 127 128 129 130 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 124 def add_index(table_name, column_name, = {}) index_definition, = (table_name, column_name, **) execute <<-SQL.squish ALTER TABLE #{quote_table_name(index_definition.table)} ADD #{schema_creation.accept(index_definition)} SQL end |
#change_table(table_name, _options = {}) {|update_table_definition(table_name, recorder)| ... } ⇒ Object
148 149 150 151 152 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 148 def change_table(table_name, = {}) recorder = ActiveRecord::Migration::CommandRecorder.new(self) yield update_table_definition(table_name, recorder) bulk_change_table(table_name, recorder.commands) end |
#exec_delete(sql, name, binds) ⇒ Object Also known as: exec_update
79 80 81 82 83 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 79 def exec_delete(sql, name, binds) execute(to_sql(sql, binds), name) @raw_connection.affected_rows end |
#exec_insert(sql, name, binds, pky = nil, sequence_name = nil, returning: nil) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument, Metrics/ParameterLists
86 87 88 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 86 def exec_insert(sql, name, binds, pky = nil, sequence_name = nil, returning: nil) # rubocop:disable Lint/UnusedMethodArgument, Metrics/ParameterLists execute(to_sql(sql, binds), name) end |
#full_version ⇒ Object
154 155 156 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 154 def full_version get_full_version end |
#get_full_version ⇒ Object
rubocop:disable Naming/AccessorMethodName
158 159 160 161 162 163 164 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 158 def get_full_version # rubocop:disable Naming/AccessorMethodName return @get_full_version if defined? @get_full_version with_raw_connection do |conn| @get_full_version = conn.database_adapter.get_database_version.full_version_string end end |
#internal_exec_query(sql, name = 'SQL', _binds = [], **_kwargs) ⇒ Object Also known as: exec_query
:nodoc:
90 91 92 93 94 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 90 def internal_exec_query(sql, name = 'SQL', _binds = [], **_kwargs) # :nodoc: result = execute(sql, name) fields = result.fields if defined?(result.fields) ActiveRecord::Result.new(fields || [], result.to_a) end |
#last_inserted_id(result) ⇒ Object
166 167 168 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 166 def last_inserted_id(result) @raw_connection.database_adapter.send(:last_inserted_id, result) end |
#new_column ⇒ Object
115 116 117 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 115 def new_column(...) Column.new(...) end |
#remove_index(table_name, column_name = nil, **options) ⇒ Object
Remove the given index from the table.
136 137 138 139 140 141 142 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 136 def remove_index(table_name, column_name = nil, **) return if [:if_exists] && !index_exists?(table_name, column_name, **) index_name = index_name_for_remove(table_name, column_name, ) execute "ALTER TABLE #{quote_table_name(table_name)} DROP INDEX #{quote_column_name(index_name)}" end |
#schema_creation ⇒ Object
144 145 146 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 144 def schema_creation SchemaCreation.new(self) end |
#select(sql, name = nil, binds = [], **kwargs) ⇒ Object
Executes a SELECT query and returns an array of record hashes with the column names as keys and column values as values.
106 107 108 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 106 def select(sql, name = nil, binds = [], **kwargs) exec_query(sql, name, binds, **kwargs) end |
#select_rows(arel, name = nil, binds = []) ⇒ Object
Executes a SELECT query and returns an array of rows. Each row is an array of field values.
100 101 102 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 100 def select_rows(arel, name = nil, binds = []) select_all(arel, name, binds).rows end |
#supports_migrations? ⇒ Boolean
Returns true, as this adapter supports migrations
111 112 113 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 111 def supports_migrations? true end |
#write_query?(sql) ⇒ Boolean
:nodoc:
73 74 75 76 77 |
# File 'lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb', line 73 def write_query?(sql) # :nodoc: !ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp( :desc, :describe, :set, :show, :use ).match?(sql) end |