make extract_fixed_values work without an alias, make _extract_fixed_condition_column...
Matt S Trout [Fri, 15 Nov 2013 15:33:49 +0000 (15:33 +0000)]
lib/DBIx/Class/ResultSource.pm
lib/DBIx/Class/Storage/DBIHacks.pm

index c9c86dc..565410e 100644 (file)
@@ -1555,13 +1555,13 @@ sub _extract_fixed_conditions_for {
         my ($l, $r) = @{$n->{args}};
         if (
           is_Identifier($r) and @{$r->{elements}} == 2
-          and $r->{elements}[0] eq $alias
+          and (!$alias or $r->{elements}[0] eq $alias)
         ) {
           ($l, $r) = ($r, $l);
         }
         if (
           is_Identifier($l) and @{$l->{elements}} == 2
-          and $l->{elements}[0] eq $alias
+          and (!$alias or $l->{elements}[0] eq $alias)
         ) {
           $found{$l->{elements}[1]} = $r;
         } elsif (($n->{operator}{Perl}||'') eq 'and') {
index 6f3a57a..3033173 100644 (file)
@@ -981,6 +981,12 @@ sub _main_source_order_by_portion_is_stable {
 sub _extract_fixed_condition_columns {
   my ($self, $where) = @_;
 
+  if (ref($where) eq 'REF' and ref($$where) eq 'HASH') {
+    # Yes. I know.
+    my $fixed = DBIx::Class::ResultSource->_extract_fixed_values_for($$where);
+    return [ keys %$fixed ];
+  }
+
   return unless ref $where eq 'HASH';
 
   my @cols;