X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRow.pm;h=0ba724342491cedeaf4bf6a920aeeaa3ef89e21a;hb=1a4e8d7c8431df44e9cf1cc4f5d261390ec789c6;hp=dd69c57ebb4d5bf1c78c27423133148b69a8ec1d;hpb=e91e756c9730a33b881db5ab73f5bb3352d53d06;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Row.pm b/lib/DBIx/Class/Row.pm index dd69c57..0ba7243 100644 --- a/lib/DBIx/Class/Row.pm +++ b/lib/DBIx/Class/Row.pm @@ -50,7 +50,9 @@ sub new { my ($class, $attrs) = @_; $class = ref $class if ref $class; - my $new = { _column_data => {} }; + my $new = { + _column_data => {}, + }; bless $new, $class; if (my $handle = delete $attrs->{-source_handle}) { @@ -207,7 +209,8 @@ sub insert { } } - $source->storage->insert($source, { $self->get_columns }); + my $updated_cols = $source->storage->insert($source, { $self->get_columns }); + $self->set_columns($updated_cols); ## PK::Auto my @auto_pri = grep { @@ -470,7 +473,11 @@ sub set_column { my $old = $self->get_column($column); my $ret = $self->store_column(@_); $self->{_dirty_columns}{$column} = 1 - if (defined $old ^ defined $ret) || (defined $old && $old ne $ret); + if (defined $old xor defined $ret) || (defined $old && $old ne $ret); + + # XXX clear out the relation cache for this column + delete $self->{related_resultsets}{$column}; + return $ret; }