fix condition extraction for new_result
Matt S Trout [Sun, 17 Nov 2013 02:53:33 +0000 (02:53 +0000)]
lib/DBIx/Class/ResultSet.pm
lib/DBIx/Class/ResultSource.pm

index e329034..3b1f849 100644 (file)
@@ -2504,8 +2504,11 @@ sub _merge_with_rscond {
     }
   }
   elsif (ref $self->{cond} eq 'REF' and ref ${$self->{cond}} eq 'HASH') {
-    %new_data = %{$self->result_source
-                       ->_extract_fixed_values_for(${$self->{cond}}, $alias)};
+    %new_data = %{$self->_remove_alias(
+      $self->result_source
+           ->_extract_fixed_values_for(${$self->{cond}}),
+      $alias
+    )};
   }
   else {
     $self->throw_exception(
index 04f02cb..ea0adac 100644 (file)
@@ -1564,16 +1564,22 @@ sub _extract_fixed_conditions_for {
     ) {
       my ($l, $r) = @{$n->{args}};
       if (
-        is_Identifier($r) and @{$r->{elements}} == 2
-        and (!$alias or $r->{elements}[0] eq $alias)
+        is_Identifier($r) and (
+          !$alias
+          or (@{$r->{elements}} == 2
+              and $r->{elements}[0] eq $alias)
+        )
       ) {
         ($l, $r) = ($r, $l);
       }
       if (
-        is_Identifier($l) and @{$l->{elements}} == 2
-        and (!$alias or $l->{elements}[0] eq $alias)
+        is_Identifier($l) and (
+          !$alias
+          or (@{$l->{elements}} == 2
+              and $l->{elements}[0] eq $alias)
+        )
       ) {
-        $found{$l->{elements}[1]} = $r;
+        $found{$alias ? $l->{elements}[1] : join('.',@{$l->{elements}})} = $r;
       }
     }
   }