From: Peter Rabbitson Date: Tue, 16 Sep 2014 16:24:25 +0000 (+0200) Subject: Fix broken temporary backcompat shim for naughty _resolve_condition callers X-Git-Tag: v0.082800~36 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=commitdiff_plain;h=4f8c967809333fc5378171094166600b2a3a5121 Fix broken temporary backcompat shim for naughty _resolve_condition callers The 9b96f3d41 refactor undid all the backcompat shims that were introduced in c0f445097. Reinstate the insanity until after 28... --- diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 2d54ec0..22ab02b 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -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