Use a separate key for caching prefetched filter rels people/ilmari/delay-related-rs-creation-for-single-rels
Dagfinn Ilmari Mannsåker [Sat, 22 Nov 2014 18:37:42 +0000 (18:37 +0000)]
This silences the extra deprecation warnings about prefetched filter
rels vs. get(_inflated)_columns. XXX: Determine if these warnings are
actually valid and missed before, or bogus and should be silenced.

The warnings were coming from:

t/inflate/hri_torture.t line 25
t/multi_create/cd_single.t line 12
t/multi_create/diamond.t line 25
t/multi_create/existing_in_chain.t line 70
t/multi_create/in_memory.t line 80
t/multi_create/in_memory.t line 96
t/multi_create/in_memory.t line 101
t/multi_create/standard.t line 80
t/multi_create/standard.t line 115
t/multi_create/standard.t line 182
t/multi_create/torture.t line 21
t/multi_create/standard.t line 456
t/prefetch/manual.t line 27
t/prefetch/multiple_hasmany_torture.t line 13
t/relationship/custom_opaque.t line 11
t/resultset/inflate_result_api.t line 24

lib/DBIx/Class/CDBICompat/LazyLoading.pm
lib/DBIx/Class/Relationship/Base.pm
lib/DBIx/Class/Row.pm

index 798fcd3..9613d1f 100644 (file)
@@ -81,6 +81,7 @@ sub discard_changes {
   delete $self->{_column_data}{$_} for $self->is_changed;
   delete $self->{_dirty_columns};
   delete $self->{_relationship_data};
+  delete $self->{_filter_relationship_data};
 
   return $self;
 }
index ec525c5..5eb565b 100644 (file)
@@ -611,9 +611,9 @@ sub related_resultset {
     elsif (
       $rel_info->{attrs}{accessor} eq 'filter'
         and
-      exists $self->{_inflated_column}{$rel}
+      exists $self->{_filter_relationship_data}{$rel}
     ) {
-      $rs->set_cache([ $self->{_inflated_column}{$rel} || () ]);
+      $rs->set_cache([ $self->{_filter_relationship_data}{$rel} || () ]);
     }
     $rs;
   };
index 80666b3..0781824 100644 (file)
@@ -723,7 +723,7 @@ sub _has_related_resultset_cached {
     ) or (
       $accessor eq 'filter'
         and
-      exists $self->{_inflated_column}{$relname}
+      exists $self->{_filter_relationship_data}{$relname}
     ) or (
       defined $self->{related_resultsets}{$relname}
         and
@@ -988,6 +988,7 @@ sub set_column {
       elsif ( $acc eq 'filter' and $rel_name eq $column) {
         delete $self->{related_resultsets}{$rel_name};
         #delete $self->{_relationship_data}{$rel_name};
+        delete $self->{_filter_relationship_data}{$rel_name};
         delete $self->{_inflated_column}{$rel_name};
       }
     }
@@ -1318,6 +1319,7 @@ sub inflate_result {
         $new->{_relationship_data}{$rel_name} = $rel_objects[0];
       }
       elsif ($relinfo->{attrs}{accessor} eq 'filter') {
+        $new->{_filter_relationship_data}{$rel_name} = $rel_objects[0];
         $new->{_inflated_column}{$rel_name} = $rel_objects[0];
       }
       else {