X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship%2FBase.pm;h=62133a8dce0d21b31e0dcccd5e431687d6d5cc3f;hb=e0b505d481be96b70e1124bd66920cace15922c4;hp=1749a1bdb9dd82a00a6a526e3d17e4e42234b1b1;hpb=2e4ec773b3ab085e8813c15df03d9b4c1f4bf3dc;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Relationship/Base.pm b/lib/DBIx/Class/Relationship/Base.pm index 1749a1b..62133a8 100644 --- a/lib/DBIx/Class/Relationship/Base.pm +++ b/lib/DBIx/Class/Relationship/Base.pm @@ -202,12 +202,16 @@ sub related_resultset { my $source = $self->result_source; # condition resolution may fail if an incomplete master-object prefetch - # is encountered - my $cond = - eval { $source->_resolve_condition( $rel_info->{cond}, $rel, $self ) } - || - $DBIx::Class::ResultSource::UNRESOLVABLE_CONDITION - ; + # is encountered - that is ok during prefetch construction (not yet in_storage) + my $cond = eval { $source->_resolve_condition( $rel_info->{cond}, $rel, $self ) }; + if (my $err = $@) { + if ($self->in_storage) { + $self->throw_exception ($err); + } + else { + $cond = $DBIx::Class::ResultSource::UNRESOLVABLE_CONDITION; + } + } if ($cond eq $DBIx::Class::ResultSource::UNRESOLVABLE_CONDITION) { my $reverse = $source->reverse_relationship_info($rel);