Class: ActiveRecord::ConnectionAdapters::MysqlPtOscAdapter
- Inherits:
-
Mysql2Adapter
- Object
- Mysql2Adapter
- ActiveRecord::ConnectionAdapters::MysqlPtOscAdapter
- Defined in:
- lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb
Constant Summary collapse
- ADAPTER_NAME =
'mysql-pt-osc'
Instance Method Summary collapse
- #adapter_name ⇒ Object
- #add_column(table_name, column_name, type, options = {}) ⇒ Object
-
#add_index(table_name, column_name, options = {}) ⇒ Object
Adds a new index to the table.
-
#change_column(table_name, column_name, type, options = {}) ⇒ Object
:nodoc:.
- #clear_commands ⇒ Object
- #get_commanded_tables ⇒ Object
- #get_commands_string(table_name) ⇒ Object
-
#remove_column(table_name, *column_names) ⇒ Object
Removes the column(s) from the table definition.
-
#remove_index!(table_name, index_name) ⇒ Object
:nodoc:.
-
#rename_column(table_name, column_name, new_column_name) ⇒ Object
:nodoc:.
-
#rename_table(table_name, new_name) ⇒ Object
Renames a table.
Instance Method Details
#adapter_name ⇒ Object
23 24 25 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 23 def adapter_name 'mysql2' # For compatibility with code that check adapter name end |
#add_column(table_name, column_name, type, options = {}) ⇒ Object
35 36 37 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 35 def add_column(table_name, column_name, type, = {}) add_command(table_name, add_column_sql(table_name, column_name, type, )) end |
#add_index(table_name, column_name, options = {}) ⇒ Object
Adds a new index to the table. column_name can be a single Symbol, or an Array of Symbols.
The index will be named after the table and the column name(s), unless you pass :name as an option.
Examples
Creating a simple index
add_index(:suppliers, :name)
generates
CREATE INDEX suppliers_name_index ON suppliers(name)
Creating a unique index
add_index(:accounts, [:branch_id, :party_id], :unique => true)
generates
CREATE UNIQUE INDEX accounts_branch_id_party_id_index ON accounts(branch_id, party_id)
Creating a named index
add_index(:accounts, [:branch_id, :party_id], :unique => true, :name => 'by_branch_party')
generates
CREATE UNIQUE INDEX by_branch_party ON accounts(branch_id, party_id)
Creating an index with specific key length
add_index(:accounts, :name, :name => 'by_name', :length => 10)
generates
CREATE INDEX by_name ON accounts(name(10))
add_index(:accounts, [:name, :surname], :name => 'by_name_surname', :length => {:name => 10, :surname => 15})
generates
CREATE INDEX by_name_surname ON accounts(name(10), surname(15))
Creating an index with a sort order (desc or asc, asc is the default)
add_index(:accounts, [:branch_id, :party_id, :surname], :order => {:branch_id => :desc, :part_id => :asc})
generates
CREATE INDEX by_branch_desc_party ON accounts(branch_id DESC, party_id ASC, surname)
Note: mysql doesn’t yet support index order (it accepts the syntax but ignores it)
102 103 104 105 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 102 def add_index(table_name, column_name, = {}) index_name, index_type, index_columns = (table_name, column_name, ) add_command(table_name, "ADD #{index_type} INDEX #{quote_column_name(index_name)} (#{index_columns})") end |
#change_column(table_name, column_name, type, options = {}) ⇒ Object
:nodoc:
39 40 41 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 39 def change_column(table_name, column_name, type, = {}) #:nodoc: add_command(table_name, change_column_sql(table_name, column_name, type, )) end |
#clear_commands ⇒ Object
111 112 113 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 111 def clear_commands @osc_commands = {} end |
#get_commanded_tables ⇒ Object
120 121 122 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 120 def get_commanded_tables get_commands.keys end |
#get_commands_string(table_name) ⇒ Object
115 116 117 118 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 115 def get_commands_string(table_name) get_commands[table_name] ||= [] get_commands[table_name].join(',') end |
#remove_column(table_name, *column_names) ⇒ Object
Removes the column(s) from the table definition.
Examples
remove_column(:suppliers, :qualification)
remove_columns(:suppliers, :qualification, :experience)
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 51 def remove_column(table_name, *column_names) if column_names.flatten! = 'Passing array to remove_columns is deprecated, please use ' + 'multiple arguments, like: `remove_columns(:posts, :foo, :bar)`' ActiveSupport::Deprecation.warn , caller end columns_for_remove(table_name, *column_names).each do |column_name| add_command(table_name, "DROP COLUMN #{column_name}") end end |
#remove_index!(table_name, index_name) ⇒ Object
:nodoc:
107 108 109 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 107 def remove_index!(table_name, index_name) #:nodoc: add_command(table_name, "DROP INDEX #{quote_column_name(index_name)}") end |
#rename_column(table_name, column_name, new_column_name) ⇒ Object
:nodoc:
43 44 45 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 43 def rename_column(table_name, column_name, new_column_name) #:nodoc: add_command(table_name, rename_column_sql(table_name, column_name, new_column_name)) end |
#rename_table(table_name, new_name) ⇒ Object
Renames a table.
Example:
rename_table('octopuses', 'octopi')
31 32 33 |
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 31 def rename_table(table_name, new_name) add_command(table_name, "RENAME TO #{quote_table_name(new_name)}") end |