提交 a90fdec0 编写于 作者: J Jeremy Kemper

More compatible Oracle column reflection. Closes #2771.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2935 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 5298f730
*SVN*
* More compatible Oracle column reflection. #2771 [Ryan Davis <ryand-ruby@zenspider.com>, Michael Schoen <schoenm@earthlink.net>]
*1.13.0* (November 7th, 2005)
* Fixed faulty regex in get_table_name method (SQLServerAdapter) #2639 [Ryan Tomayko]
......
......@@ -312,6 +312,10 @@ def indexes(table_name, name = nil) #:nodoc:
end
def columns(table_name, name = nil) #:nodoc:
table_name = table_name.to_s.upcase
owner = table_name.include?('.') ? "'#{table_name.split('.').first}'" : "user"
table = "'#{table_name.split('.').last}'"
select_all(%Q{
select column_name, data_type, data_default, nullable,
case when data_type = 'NUMBER' then data_precision
......@@ -319,12 +323,14 @@ def columns(table_name, name = nil) #:nodoc:
else null end as length,
case when data_type = 'NUMBER' then data_scale
else null end as scale
from user_catalog cat, user_synonyms syn, all_tab_columns col
where cat.table_name = '#{table_name.to_s.upcase}'
from all_catalog cat, all_synonyms syn, all_tab_columns col
where cat.owner = #{owner}
and cat.table_name = #{table}
and syn.owner (+)= cat.owner
and syn.synonym_name (+)= cat.table_name
and col.owner = nvl(syn.table_owner, user)
and col.table_name = nvl(syn.table_name, cat.table_name)}
).map do |row|
and col.owner = nvl(syn.table_owner, cat.owner)
and col.table_name = nvl(syn.table_name, cat.table_name)
}).map do |row|
row['data_default'].gsub!(/^'(.*)'$/, '\1') if row['data_default']
OCIColumn.new(
oci_downcase(row['column_name']),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册