[Bast-commits] r5003 - in DBIx-Class/0.08/trunk: lib/DBIx/Class t

ribasushi at dev.catalyst.perl.org ribasushi at dev.catalyst.perl.org
Mon Oct 27 17:27:41 GMT 2008


Author: ribasushi
Date: 2008-10-27 17:27:40 +0000 (Mon, 27 Oct 2008)
New Revision: 5003

Modified:
   DBIx-Class/0.08/trunk/lib/DBIx/Class/Row.pm
   DBIx-Class/0.08/trunk/t/85utf8.t
Log:
dirty_column detection in set_column() should not depend on the (undocumented) return value of store_column()

Modified: DBIx-Class/0.08/trunk/lib/DBIx/Class/Row.pm
===================================================================
--- DBIx-Class/0.08/trunk/lib/DBIx/Class/Row.pm	2008-10-27 03:20:25 UTC (rev 5002)
+++ DBIx-Class/0.08/trunk/lib/DBIx/Class/Row.pm	2008-10-27 17:27:40 UTC (rev 5003)
@@ -518,18 +518,19 @@
 =cut
 
 sub set_column {
-  my $self = shift;
-  my ($column) = @_;
+  my ($self, $column, $new_value) = @_;
+
   $self->{_orig_ident} ||= $self->ident_condition;
-  my $old = $self->get_column($column);
-  my $ret = $self->store_column(@_);
+  my $old_value = $self->get_column($column);
+
+  $self->store_column($column, $new_value);
   $self->{_dirty_columns}{$column} = 1
-    if (defined $old xor defined $ret) || (defined $old && $old ne $ret);
+    if (defined $old_value xor defined $new_value) || (defined $old_value && $old_value ne $new_value);
 
   # XXX clear out the relation cache for this column
   delete $self->{related_resultsets}{$column};
 
-  return $ret;
+  return $new_value;
 }
 
 =head2 set_columns

Modified: DBIx-Class/0.08/trunk/t/85utf8.t
===================================================================
--- DBIx-Class/0.08/trunk/t/85utf8.t	2008-10-27 03:20:25 UTC (rev 5002)
+++ DBIx-Class/0.08/trunk/t/85utf8.t	2008-10-27 17:27:40 UTC (rev 5003)
@@ -16,7 +16,7 @@
     eval 'use utf8; 1' or plan skip_all => 'Need utf8 run this test';
 }
 
-plan tests => 3;
+plan tests => 5;
 
 DBICTest::Schema::CD->load_components('UTF8Columns');
 DBICTest::Schema::CD->utf8_columns('title');
@@ -43,3 +43,13 @@
     $cd->title($utf8_char);
     ok( !utf8::is_utf8( $cd->{_column_data}{title} ), 'store utf8-less chars' );
 }
+
+my $v_utf8 = "\x{219}";
+
+$cd->update ({ title => $v_utf8 });
+$cd->title($v_utf8);
+ok( !$cd->is_column_changed('title'), 'column is not dirty after setting the same unicode value' );
+
+$cd->update ({ title => $v_utf8 });
+$cd->title('something_else');
+ok( $cd->is_column_changed('title'), 'column is dirty after setting to something completely different');




More information about the Bast-commits mailing list