Class: ActiveRecord::ConnectionAdapters::MysqlPtOscAdapter

Inherits:
Mysql2Adapter
  • Object
show all
Defined in:
lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb

Constant Summary collapse

ADAPTER_NAME =
'mysql-pt-osc'

Instance Method Summary collapse

Instance Method Details

#adapter_nameObject



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, options = {})
  add_command(table_name, add_column_sql(table_name, column_name, type, options))
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, options = {})
  index_name, index_type, index_columns = add_index_options(table_name, column_name, options)
  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, options = {}) #:nodoc:
  add_command(table_name, change_column_sql(table_name, column_name, type, options))
end

#clear_commandsObject



111
112
113
# File 'lib/active_record/connection_adapters/mysql_pt_osc_adapter.rb', line 111

def clear_commands
  @osc_commands = {}
end

#get_commanded_tablesObject



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!
    message = 'Passing array to remove_columns is deprecated, please use ' +
      'multiple arguments, like: `remove_columns(:posts, :foo, :bar)`'
    ActiveSupport::Deprecation.warn message, 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