def each_column_description_by_index_name(table_name, index_name)
unless block_given?
return enum_for(:each_column_description_by_index_name, table_name, index_name)
end
unless index = index_by_name(table_name, index_name)
raise "Index #{index_name} for table #{table_name} not found"
end
columns_in_index = {}
each_column_in_index_by_name(table_name, index_name) do |record|
columns_in_index[record["NAME"]] = 1
yield _make_column_description(:key, record)
end
if index["TYPE"] & INDEX_TYPE_FLAG[:CLUSTERED] != 0
each_column_by_table_name(table_name) do |record|
unless columns_in_index.include?(record["NAME"])
yield _make_column_description(:row, record)
end
end
else
clustered_index_name = clustered_index_name_by_table_name(table_name)
each_column_in_index_by_name(table_name, clustered_index_name) do |record|
yield _make_column_description(:row, record)
end
end
nil
end