X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSet.pm;h=0ac9ae7ba967c793df977f11c75532fb02add283;hb=f0b87b2c979e37d607c819eb4ec13eff93dac573;hp=5a94615eaaf773df7e20dcd4506f6f3ac4ec113a;hpb=7ea21ae2cd6eba60ad44e9a472456015547e9cac;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSet.pm b/lib/DBIx/Class/ResultSet.pm index 5a94615..0ac9ae7 100644 --- a/lib/DBIx/Class/ResultSet.pm +++ b/lib/DBIx/Class/ResultSet.pm @@ -291,6 +291,10 @@ sub search_rs { $rows = $self->get_cache; } + if (List::Util::first { exists $attrs->{$_} } qw{select as columns}) { + delete $our_attrs->{$_} for (qw{+select +as +columns}); + } + my $new_attrs = { %{$our_attrs}, %{$attrs} }; # merge new attrs into inherited @@ -298,6 +302,7 @@ sub search_rs { next unless exists $attrs->{$key}; $new_attrs->{$key} = $self->_merge_attr($our_attrs->{$key}, $attrs->{$key}); } + my $cond = (@_ ? ( (@_ == 1 || ref $_[0] eq "HASH") @@ -2790,12 +2795,12 @@ sub _resolved_attrs { push @{ $attrs->{select} }, map values %{$_}, @colbits; push @{ $attrs->{as} }, map keys %{$_}, @colbits; - if ( my $adds = $attrs->{'+select'} ) { + if ( my $adds = delete $attrs->{'+select'} ) { $adds = [$adds] unless ref $adds eq 'ARRAY'; push @{ $attrs->{select} }, map { /\./ || ref $_ ? $_ : "$alias.$_" } @$adds; } - if ( my $adds = $attrs->{'+as'} ) { + if ( my $adds = delete $attrs->{'+as'} ) { $adds = [$adds] unless ref $adds eq 'ARRAY'; push @{ $attrs->{as} }, @$adds; }