updated changes. fixed ResultSetColumn w/prefetch problem
Luke Saunders [Mon, 9 Jul 2007 10:40:46 +0000 (10:40 +0000)]
Changes
lib/DBIx/Class/ResultSetColumn.pm
t/88result_set_column.t

diff --git a/Changes b/Changes
index d258123..69facca 100644 (file)
--- a/Changes
+++ b/Changes
@@ -5,6 +5,9 @@ Revision history for DBIx::Class
           with debian packaging
         - Patch to fix ? in data for NoBindVars (from Tom Hukins)
         - Restored mk_classaccessor method for compatibility
+        - Fixed group_by problem with oracle limit syntax
+        - Fixed attr merging problem
+        - Fixed $rs->get_column w/prefetch  problem
 
 0.08002 2007-06-20 06:10:00
         - add scope guard to Row::insert to ensure rollback gets called
index 876a3c1..f93cbdd 100644 (file)
@@ -35,7 +35,9 @@ passed as params. Used internally by L<DBIx::Class::ResultSet/get_column>.
 sub new {
   my ($class, $rs, $column) = @_;
   $class = ref $class if ref $class;
-  my $new = bless { _column => $column, _parent_resultset => $rs }, $class;
+  my $new_parent_rs = $rs->search_rs; # we don't want to mess up the original, so clone it
+  $new_parent_rs->{attrs}->{prefetch} = undef; # prefetch causes additional columns to be fetched
+  my $new = bless { _column => $column, _parent_resultset => $new_parent_rs }, $class;
   $new->throw_exception("column must be supplied") unless $column;
   return $new;
 }
index 936a0a7..08828af 100644 (file)
@@ -7,7 +7,7 @@ use DBICTest;
 
 my $schema = DBICTest->init_schema();
 
-plan tests => 8; 
+plan tests => 9; 
 
 my $cd;
 my $rs = $cd = $schema->resultset("CD")->search({});
@@ -42,3 +42,8 @@ $psrs = $schema->resultset('CD')->search({},
 ok(defined($psrs->get_column('count')), '+select/+as arrayref count');
 ok(defined($psrs->get_column('addedtitle')), '+select/+as title');
 
+{
+  my $rs = $schema->resultset("CD")->search({}, { prefetch => 'artist' });
+  my $rsc = $rs->get_column('year');
+  is( $rsc->{_parent_resultset}->{attrs}->{prefetch}, undef, 'prefetch wiped' );
+}