Fix broken temporary backcompat shim for naughty _resolve_condition callers
Peter Rabbitson [Tue, 16 Sep 2014 16:24:25 +0000 (18:24 +0200)]
The 9b96f3d41 refactor undid all the backcompat shims that were introduced
in c0f445097. Reinstate the insanity until after 28...

lib/DBIx/Class/ResultSource.pm

index 2d54ec0..22ab02b 100644 (file)
@@ -1865,12 +1865,17 @@ sub _resolve_relationship_condition {
   $self->throw_exception("Arguments 'self_alias' and 'foreign_alias' may not be identical")
     if $args->{self_alias} eq $args->{foreign_alias};
 
+# TEMP
+  my $exception_rel_id = "relationship '$args->{rel_name}' on source '@{[ $self->source_name ]}'";
+
   my $rel_info = $self->relationship_info($args->{rel_name})
 # TEMP
 #    or $self->throw_exception( "No such $exception_rel_id" );
     or carp_unique("Requesting resolution on non-existent relationship '$args->{rel_name}' on source '@{[ $self->source_name ]}': fix your code *soon*, as it will break with the next major version");
 
-  my $exception_rel_id = "relationship '$rel_info->{_original_name}' on source '@{[ $self->source_name ]}'";
+# TEMP
+  $exception_rel_id = "relationship '$rel_info->{_original_name}' on source '@{[ $self->source_name ]}'"
+    if $rel_info;
 
   $self->throw_exception("No practical way to resolve $exception_rel_id between two data structures")
     if exists $args->{self_result_object} and exists $args->{foreign_values};
@@ -1890,9 +1895,13 @@ sub _resolve_relationship_condition {
     )
   ;
 
-  my $rel_rsrc = $self->related_source($args->{rel_name});
+#TEMP
+  my $rel_rsrc;# = $self->related_source($args->{rel_name});
 
   if (exists $args->{foreign_values}) {
+# TEMP
+    $rel_rsrc ||= $self->related_source($args->{rel_name});
+
     if (defined blessed $args->{foreign_values}) {
 
       $self->throw_exception( "Objects supplied as 'foreign_values' ($args->{foreign_values}) must inherit from DBIx::Class::Row" )
@@ -1954,6 +1963,9 @@ sub _resolve_relationship_condition {
         "The join-free condition returned for $exception_rel_id must be a hash reference"
       ) unless ref $jfc eq 'HASH';
 
+# TEMP
+      $rel_rsrc ||= $self->related_source($args->{rel_name});
+
       my ($joinfree_alias, $joinfree_source);
       if (defined $args->{self_result_object}) {
         $joinfree_alias = $args->{foreign_alias};
@@ -2141,6 +2153,9 @@ sub _resolve_relationship_condition {
 
       next if $col_eqs->{$lhs} eq UNRESOLVABLE_CONDITION;
 
+# TEMP
+      $rel_rsrc ||= $self->related_source($args->{rel_name});
+
       # there is no way to know who is right and who is left in a cref
       # therefore a full blown resolution call, and figure out the
       # direction a bit further below