74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/sequel/adapters/shared/sqlanywhere.rb', line 74
def foreign_key_list(table, opts=OPTS)
m = output_identifier_meth
im = input_identifier_meth
fk_indexes = {}
metadata_dataset.
from{sys[:sysforeignkey].as(:fk)}.
select{[
fk[:role].as(:name),
fks[:columns].as(:column_map),
si[:indextype].as(:type),
si[:colnames].as(:columns),
fks[:primary_tname].as(:table_name)]}.
join(Sequel[:sys][:sysforeignkeys].as(:fks), :role => :role).
join(Sequel[:sys][:sysindexes].as(:si), {:iname => Sequel[:fk][:role]}, {:implicit_qualifier => :fk}).
where{{fks[:foreign_tname]=>im.call(table)}}.
each do |r|
unless r[:type].downcase == 'primary key'
fk_indexes[r[:name]] =
{:name=>m.call(r[:name]),
:columns=>r[:columns].split(',').map{|v| m.call(v.split(' ').first)},
:table=>m.call(r[:table_name]),
:key=>r[:column_map].split(',').map{|v| m.call(v.split(' IS ').last)}}
end
end
fk_indexes.values
end
|