method
indexes
v5.0.0.1 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters
indexes(table_name, name = nil)public
Returns an array of indexes for the given table.
# File activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb, line 374
def indexes(table_name, name = nil) #:nodoc:
indexes = []
current_index = nil
execute_and_free("SHOW KEYS FROM #{quote_table_name(table_name)}", 'SCHEMA') do |result|
each_hash(result) do |row|
if current_index != row[:Key_name]
next if row[:Key_name] == 'PRIMARY' # skip the primary key
current_index = row[:Key_name]
mysql_index_type = row[:Index_type].downcase.to_sym
index_type = INDEX_TYPES.include?(mysql_index_type) ? mysql_index_type : nil
index_using = INDEX_USINGS.include?(mysql_index_type) ? mysql_index_type : nil
indexes << IndexDefinition.new(row[:Table], row[:Key_name], row[:Non_unique].to_i == 0, [], [], nil, nil, index_type, index_using, row[:Index_comment].presence)
end
indexes.last.columns << row[:Column_name]
indexes.last.lengths << row[:Sub_part]
end
end
indexes
end Related methods
- Instance methods
- add_index
- add_sql_comment!
- begin_db_transaction
- begin_isolated_db_transaction
- bulk_change_table
- case_sensitive_comparison
- change_column
- change_column_default
- change_column_null
- charset
- clear_cache!
- collation
- columns
- columns_for_distinct
- commit_db_transaction
- create_database
- create_table
- current_database
- data_source_exists?
- data_sources
- disable_referential_integrity
- drop_database
- drop_table
- each_hash
- empty_insert_statement_value
- error_number
- exec_rollback_db_transaction
- execute
- execute_and_free
- explain
- foreign_keys
- get_advisory_lock
- index_algorithms
- indexes
- internal_string_options_for_primary_key
- join_to_update
- mariadb?
- native_database_types
- new_column
- primary_keys
- recreate_database
- release_advisory_lock
- rename_column
- rename_index
- rename_table
- show_variable
- strict_mode?
- supports_advisory_locks?
- supports_bulk_alter?
- supports_datetime_with_precision?
- supports_explain?
- supports_foreign_keys?
- supports_index_sort_order?
- supports_indexes_in_create?
- supports_migrations?
- supports_primary_key?
- supports_statement_cache?
- supports_transaction_isolation?
- supports_views?
- table_comment
- table_exists?
- table_options
- tables
- truncate
- type_to_sql
- valid_type?
- version
- view_exists?
- views
- Class methods
- new
- Protected methods
-
add_column_sql -
add_index_length -
add_index_sql -
add_timestamps_sql -
change_column_sql -
extract_precision -
fetch_type_metadata -
initialize_type_map -
quoted_columns_for_index -
register_integer_type -
remove_column_sql -
remove_columns_sql -
remove_index_sql -
remove_timestamps_sql -
rename_column_sql -
translate_exception - Private methods
-
binary_to_sql -
can_perform_case_insensitive_comparison_for? -
column_definitions -
configure_connection -
create_table_definition -
create_table_info -
create_table_info_cache -
extract_foreign_key_action -
extract_schema_qualified_name -
integer_to_sql -
subquery_for -
supports_rename_index? -
text_to_sql