Backout inconsistent changes to +columns handling
Peter Rabbitson [Fri, 12 Nov 2010 14:58:24 +0000 (15:58 +0100)]
introduced in 67ba664605de95b5130b55397c7351f53dae4c19 2 years ago

Changes
lib/DBIx/Class/ResultSet.pm
t/60core.t

diff --git a/Changes b/Changes
index 6b23ccc..9aa2432 100644 (file)
--- a/Changes
+++ b/Changes
@@ -8,6 +8,8 @@ Revision history for DBIx::Class
         - Deprecate legacy $rs->search( %condition ) syntax
         - NULL is now supplied unquoted to all debug-objects, in order to
           differentiate between a real NULL and the string 'NULL'
+        - +columns now behaves just like columns by not stripping a
+          fully-qualified 'as' spec (i.e. foo.bar results in $obj->foo->bar)
 
     * Fixes
         - Fixed read-only attribute set attempt in ::Storage::Replicated
index b0a1550..8aa1d5f 100644 (file)
@@ -3156,16 +3156,6 @@ sub _resolved_attrs {
     $_->{as} = [  map { $_ =~ /^\Q$alias.\E(.+)$/ ? $1 : $_ } @{$_->{as}} ];
   }
 
-  # FIXME !!!
-  # Blatant bugwardness encoded into multiple tests.
-  # While columns behaves sensibly, +columns is expected
-  # to dump *any* foreign columns into the main object
-  # /me vomits
-  $selection_pieces->{'+columns'}{as} = [ map
-    { (split /\./, $_)[-1] }
-    @{$selection_pieces->{'+columns'}{as}}
-  ];
-
   # merge everything
   for (@sel_pairs) {
     $attrs->{select} = $self->_merge_attr ($attrs->{select}, $selection_pieces->{$_}{select});
index da5531f..630ef8e 100644 (file)
@@ -173,13 +173,13 @@ is_deeply( \@cd, [qw/cdid artist title year genreid single_track/], 'column orde
 $cd = $schema->resultset("CD")->search({ title => 'Spoonful of bees' }, { columns => ['title'] })->next;
 is($cd->title, 'Spoonful of bees', 'subset of columns returned correctly');
 
-$cd = $schema->resultset("CD")->search(undef, { include_columns => [ 'artist.name' ], join => [ 'artist' ] })->find(1);
+$cd = $schema->resultset("CD")->search(undef, { include_columns => [ { name => 'artist.name' } ], join => [ 'artist' ] })->find(1);
 
 is($cd->title, 'Spoonful of bees', 'Correct CD returned with include');
 is($cd->get_column('name'), 'Caterwauler McCrae', 'Additional column returned');
 
 # check if new syntax +columns also works for this
-$cd = $schema->resultset("CD")->search(undef, { '+columns' => [ 'artist.name' ], join => [ 'artist' ] })->find(1);
+$cd = $schema->resultset("CD")->search(undef, { '+columns' => [ { name => 'artist.name' } ], join => [ 'artist' ] })->find(1);
 
 is($cd->title, 'Spoonful of bees', 'Correct CD returned with include');
 is($cd->get_column('name'), 'Caterwauler McCrae', 'Additional column returned');