use SQL::Abstract 'is_literal_value';
use DBIx::Class::_Util qw(
dbic_internal_try dbic_internal_catch dump_value emit_loud_diag
- fail_on_internal_wantarray fail_on_internal_call UNRESOLVABLE_CONDITION
+ fail_on_internal_wantarray fail_on_internal_call
+ UNRESOLVABLE_CONDITION DUMMY_ALIASPAIR
);
use DBIx::Class::SQLMaker::Util qw( normalize_sqla_condition extract_equality_conditions );
use DBIx::Class::ResultSource::FromSpec::Util 'find_join_path_to_alias';
$call_cond = {
%$call_cond,
- %{ $rsrc->_resolve_relationship_condition(
+ %{ $rsrc->resolve_relationship_condition(
+ require_join_free_values => 1,
rel_name => $key,
foreign_values => (
(! defined blessed $foreign_val) ? $foreign_val : do {
+{ $foreign_val->get_columns };
}
),
- infer_values_based_on => {},
- self_alias => "\xFE", # irrelevant
- foreign_alias => "\xFF", # irrelevant
- )->{inferred_values} },
+ # an API where these are optional would be too cumbersome,
+ # instead always pass in some dummy values
+ DUMMY_ALIASPAIR,
+ )->{join_free_values} },
};
}
}
$colinfo->{$rel}{rs} = $rsrc->related_source($rel)->resultset;
- $colinfo->{$rel}{fk_map} = { reverse %{ $rsrc->_resolve_relationship_condition(
+ $colinfo->{$rel}{fk_map} = { reverse %{ $rsrc->resolve_relationship_condition(
rel_name => $rel,
- self_alias => "\xFE", # irrelevant
- foreign_alias => "\xFF", # irrelevant
+
+ # an API where these are optional would be too cumbersome,
+ # instead always pass in some dummy values
+ DUMMY_ALIASPAIR,
)->{identity_map} || {} } };
}
=cut
sub as_subselect_rs {
+
+ # FIXME - remove at some point in the future (2018-ish)
+ wantarray
+ and
+ carp_unique(
+ 'Starting with DBIC@0.082900 as_subselect_rs() always returns a ResultSet '
+ . 'instance regardless of calling context. Please force scalar() context to '
+ . 'silence this warning'
+ )
+ and
+ DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_WANTARRAY
+ and
+ my $sog = fail_on_internal_wantarray
+ ;
+
my $self = shift;
- my $attrs = $self->_resolved_attrs;
+ my $alias = $self->current_source_alias;
my $fresh_rs = (ref $self)->new (
$self->result_source
delete $fresh_rs->{cond};
delete @{$fresh_rs->{attrs}}{qw/where bind/};
- return $fresh_rs->search( {}, {
+ $fresh_rs->search_rs( {}, {
from => [{
- $attrs->{alias} => $self->as_query,
- -alias => $attrs->{alias},
+ $alias => $self->as_query,
+ -alias => $alias,
-rsrc => $self->result_source,
}],
- alias => $attrs->{alias},
+ alias => $alias,
});
}