Merge 'trunk' into 'DBIx-Class-current'
Daniel Westermann-Clark [Wed, 10 May 2006 17:00:11 +0000 (13:00 -0400)]
r8956@fortuna (orig r1603):  dwc | 2006-05-10 12:00:11 -0400
Row::update encapsulates this when passed a hashref; using set_columns bypasses deflation

1  2 
Changes
lib/DBIx/Class/ResultSet.pm

diff --cc Changes
+++ b/Changes
@@@ -1,22 -1,8 +1,24 @@@
  Revision history for DBIx::Class
  
 +        - modified SQLT parser to skip dupe table names
 +        - added remove_column(s) to ResultSource/ResultSourceProxy
 +        - added add_column alias to ResultSourceProxy
 +        - added source_name to ResultSource
 +        - load_classes now uses source_name and sets it if necessary
 +        - add update_or_create_related to Relationship::Base
 +        - add find_or_new to ResultSet/ResultSetProxy and find_or_new_related
 +          to Relationship::Base
 +        - add accessors for unique constraint names and coulums to
 +          ResultSource/ResultSourceProxy
 +        - rework ResultSet::find() to search unique constraints
 +        - CDBICompat: modify retrieve to fix column casing when ColumnCase is
 +          loaded
 +        - CDBICompat: override find_or_create to fix column casing when
 +          ColumnCase is loaded
 +
  0.06003
+         - don't set_columns explicitly in update_or_create; instead use
+           update($hashref) so InflateColumn works
          - fix for has_many prefetch with 0 related rows
          - make limit error if rows => 0
          - added memory cycle tests and a long-needed weaken call
@@@ -1257,11 -1139,29 +1257,10 @@@ sub update_or_create 
    my $attrs = (@_ > 1 && ref $_[$#_] eq 'HASH' ? pop(@_) : {});
    my $hash = ref $_[0] eq 'HASH' ? shift : {@_};
  
 -  my %unique_constraints = $self->result_source->unique_constraints;
 -  my @constraint_names   = (exists $attrs->{key}
 -                            ? ($attrs->{key})
 -                            : keys %unique_constraints);
 -
 -  my @unique_hashes;
 -  foreach my $name (@constraint_names) {
 -    my @unique_cols = @{ $unique_constraints{$name} };
 -    my %unique_hash =
 -      map  { $_ => $hash->{$_} }
 -      grep { exists $hash->{$_} }
 -      @unique_cols;
 -
 -    push @unique_hashes, \%unique_hash
 -      if (scalar keys %unique_hash == scalar @unique_cols);
 -  }
 -
 -  if (@unique_hashes) {
 -    my $row = $self->single(\@unique_hashes);
 -    if (defined $row) {
 -      $row->update($hash);
 -      return $row;
 -    }
 +  my $row = $self->find($hash, $attrs);
 +  if (defined $row) {
-     $row->set_columns($hash);
-     $row->update;
++    $row->update($hash);
 +    return $row;
    }
  
    return $self->create($hash);