Method: Sequel::MSSQL::DatabaseMethods#indexes

Defined in:
lib/sequel/adapters/shared/mssql.rb

#indexes(table, opts = OPTS) ⇒ Object

Use the system tables to get index information



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/sequel/adapters/shared/mssql.rb', line 89

def indexes(table, opts=OPTS)
  m = output_identifier_meth
  im = input_identifier_meth
  indexes = {}
  .from(:sys__tables___t).
   join(:sys__indexes___i, :object_id=>:object_id).
   join(:sys__index_columns___ic, :object_id=>:object_id, :index_id=>:index_id).
   join(:sys__columns___c, :object_id=>:object_id, :column_id=>:column_id).
   select(:i__name, :i__is_unique, :c__name___column).
   where{{t__name=>im.call(table)}}.
   where(:i__is_primary_key=>0, :i__is_disabled=>0).
   order(:i__name, :ic__index_column_id).
   each do |r|
    index = indexes[m.call(r[:name])] ||= {:columns=>[], :unique=>(r[:is_unique] && r[:is_unique]!=0)}
    index[:columns] << m.call(r[:column])
  end
  indexes
end