method
indexes
rails latest stable - Class:
ActiveRecord::ConnectionAdapters
Method deprecated or moved
This method is deprecated or moved on the latest stable version. The last existing version (v5.1.7) is shown here.
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 312
def indexes(table_name, name = nil) #:nodoc:
if name
ActiveSupport::Deprecation.warn( Passing name to #indexes is deprecated without replacement..squish)
end
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.merge!(row[:Column_name] => row[:Sub_part].to_i) if 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_for_distinct
- commit_db_transaction
- create_database
- create_table
- current_database
- default_index_type?
- 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
- join_to_update
- mariadb?
- native_database_types
- new_column
- new_column_from_field
- 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_statement_cache?
- supports_transaction_isolation?
- supports_views?
- supports_virtual_columns?
- table_comment
- table_options
- truncate
- type_to_sql
- version
- Class methods
- new
- Private methods
-
add_column_sql -
add_index_length -
add_index_sql -
add_options_for_index_columns -
add_timestamps_sql -
binary_to_sql -
can_perform_case_insensitive_comparison_for? -
change_column_sql -
column_definitions -
configure_connection -
create_table_definition -
create_table_info -
extract_foreign_key_action -
extract_precision -
fetch_type_metadata -
initialize_type_map -
integer_to_sql -
mismatched_foreign_key -
register_integer_type -
remove_column_sql -
remove_columns_sql -
remove_index_sql -
remove_timestamps_sql -
rename_column_sql -
subquery_for -
supports_rename_index? -
text_to_sql -
translate_exception -
version_string