Simplify internal implementation of as_subselect_rs
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / ResultSet.pm
index 128b554..2d6ea30 100644 (file)
@@ -835,7 +835,8 @@ sub find {
       $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 {
@@ -861,12 +862,11 @@ sub find {
               +{ $foreign_val->get_columns };
             }
           ),
-          infer_values_based_on => {},
 
           # an API where these are optional would be too cumbersome,
           # instead always pass in some dummy values
           DUMMY_ALIASPAIR,
-        )->{inferred_values} },
+        )->{join_free_values} },
       };
     }
   }
@@ -2531,7 +2531,7 @@ sub populate {
 
           $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,
 
             # an API where these are optional would be too cumbersome,
@@ -3506,7 +3506,7 @@ but because we isolated the group by into a subselect the above works.
 sub as_subselect_rs {
   my $self = shift;
 
-  my $attrs = $self->_resolved_attrs;
+  my $alias = $self->current_source_alias;
 
   my $fresh_rs = (ref $self)->new (
     $self->result_source
@@ -3518,11 +3518,11 @@ sub as_subselect_rs {
 
   return $fresh_rs->search( {}, {
     from => [{
-      $attrs->{alias} => $self->as_query,
-      -alias  => $attrs->{alias},
+      $alias => $self->as_query,
+      -alias  => $alias,
       -rsrc   => $self->result_source,
     }],
-    alias => $attrs->{alias},
+    alias => $alias,
   });
 }