diff --git a/import.log b/import.log index 5318169..12c3d35 100644 --- a/import.log +++ b/import.log @@ -1,3 +1,4 @@ rubygem-activerecord-2_2_2-1_fc10:HEAD:rubygem-activerecord-2.2.2-1.fc10.src.rpm:1227532664 rubygem-activerecord-2_3_2-1_fc10:HEAD:rubygem-activerecord-2.3.2-1.fc10.src.rpm:1237202080 rubygem-activerecord-2_3_3-1_fc11:F-11:rubygem-activerecord-2.3.3-1.fc11.src.rpm:1248605341 +rubygem-activerecord-2_3_2-3_fc12:F-11:rubygem-activerecord-2.3.2-3.fc12.src.rpm:1256042940 diff --git a/rubygem-activerecord-2.3.2-fix-mysql-binary-default.patch b/rubygem-activerecord-2.3.2-fix-mysql-binary-default.patch new file mode 100644 index 0000000..5923a06 --- /dev/null +++ b/rubygem-activerecord-2.3.2-fix-mysql-binary-default.patch @@ -0,0 +1,75 @@ +commit 8a49af31581095a35b6dc8b20ed12c2f9fb80855 +Author: Jatinder Singh +Date: Sun Aug 9 20:43:56 2009 -0700 + + AR should respect default values for MySQL BINARY and VARBINARY columns. + + [#1273 state:committed] + + Signed-off-by: Jeremy Kemper + +diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +index 3c5e4f5..a568f65 100644 +--- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb ++++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +@@ -75,7 +75,7 @@ module ActiveRecord + module ConnectionAdapters + class MysqlColumn < Column #:nodoc: + def extract_default(default) +- if type == :binary || type == :text ++ if sql_type =~ /blob/i || type == :text + if default.blank? + return null ? nil : '' + else +@@ -89,7 +89,7 @@ module ActiveRecord + end + + def has_default? +- return false if type == :binary || type == :text #mysql forbids defaults on blob and text columns ++ return false if sql_type =~ /blob/i || type == :text #mysql forbids defaults on blob and text columns + super + end + +diff --git a/activerecord/test/cases/column_definition_test.rb b/activerecord/test/cases/column_definition_test.rb +index 98abc8e..fc9a0ac 100644 +--- a/activerecord/test/cases/column_definition_test.rb ++++ b/activerecord/test/cases/column_definition_test.rb +@@ -33,4 +33,38 @@ class ColumnDefinitionTest < ActiveRecord::TestCase + column.limit, column.precision, column.scale, column.default, column.null) + assert_equal %Q{title varchar(20) DEFAULT 'Hello' NOT NULL}, column_def.to_sql + end ++ ++ if current_adapter?(:MysqlAdapter) ++ def test_should_set_default_for_mysql_binary_data_types ++ binary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "binary(1)") ++ assert_equal "a", binary_column.default ++ ++ varbinary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "varbinary(1)") ++ assert_equal "a", varbinary_column.default ++ end ++ ++ def test_should_not_set_default_for_blob_and_text_data_types ++ assert_raise ArgumentError do ++ ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "blob") ++ end ++ ++ assert_raise ArgumentError do ++ ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "Hello", "text") ++ end ++ ++ text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text") ++ assert_equal nil, text_column.default ++ ++ not_null_text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text", false) ++ assert_equal "", not_null_text_column.default ++ end ++ ++ def test_has_default_should_return_false_for_blog_and_test_data_types ++ blob_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "blob") ++ assert !blob_column.has_default? ++ ++ text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text") ++ assert !text_column.has_default? ++ end ++ end + end diff --git a/rubygem-activerecord.spec b/rubygem-activerecord.spec index 4077c82..23a6bfa 100644 --- a/rubygem-activerecord.spec +++ b/rubygem-activerecord.spec @@ -8,11 +8,14 @@ Summary: Implements the ActiveRecord pattern for ORM Name: rubygem-%{gemname} Epoch: 1 Version: 2.3.2 -Release: 2%{?dist} +Release: 3%{?dist} Group: Development/Languages License: MIT URL: http://www.rubyonrails.org + Source0: http://gems.rubyforge.org/gems/%{gemname}-%{version}.gem +Patch0: rubygem-activerecord-2.3.2-fix-mysql-binary-default.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: rubygems Requires: rubygem(activesupport) = %{version} @@ -36,6 +39,10 @@ mkdir -p %{buildroot}%{gemdir} gem install --local --install-dir %{buildroot}%{gemdir} \ --force --rdoc %{SOURCE0} +pushd %{buildroot}%{geminstdir} +patch -s -p2 --fuzz=0 < %{PATCH0} +popd + # Remove backup files find %{buildroot}/%{geminstdir} -type f -name "*~" -delete @@ -72,6 +79,9 @@ rm -rf %{buildroot} %{gemdir}/specifications/%{gemname}-%{version}.gemspec %changelog +* Tue Oct 20 2009 Jeroen van Meeuwen - 1:2.3.2-3 +- Backport fix for default values on MySQL Binary and VarBinary columns + * Wed Oct 7 2009 David Lutterkort - 1:2.3.2-2 - Bump epoch; rails is not updatable across versions (bz 520843)