aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-03-22 19:30:02 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-03-22 19:30:02 +0000
commit2d24bed3a072aac1a0087ec4c4681889e49ea6a4 (patch)
tree92e365cc4d36b46c00d6e20119e2ed6cfe1e46b1
parentf46eb2ab64b43bdf8d03683904de2cd97b73d0de (diff)
downloadrails-2d24bed3a072aac1a0087ec4c4681889e49ea6a4.tar.gz
rails-2d24bed3a072aac1a0087ec4c4681889e49ea6a4.tar.bz2
rails-2d24bed3a072aac1a0087ec4c4681889e49ea6a4.zip
Fixed DB2 adapter so nullable columns will be determines correctly now and quotes from column default values will be removed (closes #4350) [contact@maik-schmidt.de]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4013 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--activerecord/CHANGELOG2
-rw-r--r--activerecord/lib/active_record/connection_adapters/db2_adapter.rb5
-rwxr-xr-xactiverecord/test/base_test.rb4
3 files changed, 7 insertions, 4 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG
index 510b1c1f62..b822e8d702 100644
--- a/activerecord/CHANGELOG
+++ b/activerecord/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Fixed DB2 adapter so nullable columns will be determines correctly now and quotes from column default values will be removed #4350 [contact@maik-schmidt.de]
+
* Allow overriding of find parameters in scoped has_many :through calls [Rick Olson]
In this example, :include => false disables the default eager association from loading. :select changes the standard
diff --git a/activerecord/lib/active_record/connection_adapters/db2_adapter.rb b/activerecord/lib/active_record/connection_adapters/db2_adapter.rb
index 9819c5a92a..3b81c526f2 100644
--- a/activerecord/lib/active_record/connection_adapters/db2_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/db2_adapter.rb
@@ -146,9 +146,10 @@ begin
stmt.columns(table_name, schema).each do |c|
c_name = c[3].downcase
c_default = c[12] == 'NULL' ? nil : c[12]
+ c_default.gsub!(/^'(.*)'$/, '\1') if !c_default.nil?
c_type = c[5].downcase
c_type += "(#{c[6]})" if !c[6].nil? && c[6] != ''
- result << Column.new(c_name, c_default, c_type)
+ result << Column.new(c_name, c_default, c_type, c[17] == 'YES')
end
end
result
@@ -156,7 +157,7 @@ begin
def native_database_types
{
- :primary_key => 'int generated by default as identity primary key',
+ :primary_key => 'int generated by default as identity (start with 42) primary key',
:string => { :name => 'varchar', :limit => 255 },
:text => { :name => 'clob', :limit => 32768 },
:integer => { :name => 'int' },
diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb
index 9f79fc9b13..69665098af 100755
--- a/activerecord/test/base_test.rb
+++ b/activerecord/test/base_test.rb
@@ -1190,8 +1190,8 @@ class BasicsTest < Test::Unit::TestCase
else
assert xml.include?(%(<last-read type="date">2004-04-15</last-read>))
end
- # Oracle doesn't have true boolean or time-only fields
- unless current_adapter?(:OracleAdapter)
+ # Oracle and DB2 don't have true boolean or time-only fields
+ unless current_adapter?(:OracleAdapter) || current_adapter?(:DB2Adapter)
assert xml.include?(%(<approved type="boolean">false</approved>)), "Approved should be a boolean"
assert xml.include?(%(<bonus-time type="datetime">#{bonus_time_in_current_timezone}</bonus-time>))
end