* Made DBIC::SQL::Abstract pass on order_by hashref ({-desc => 'colname'}) to SQL...
Norbert Buchmuller [Thu, 13 Nov 2008 06:13:07 +0000 (07:13 +0100)]
lib/DBIx/Class/Storage/DBI.pm
t/95sql_maker_quote.t

index 6126b3f..54c79f1 100644 (file)
@@ -156,6 +156,9 @@ sub _order_by {
     if (defined $_[0]->{order_by}) {
       $ret .= $self->_order_by($_[0]->{order_by});
     }
+    if (grep { $_ =~ /^-(desc|asc)/i } keys %{$_[0]}) {
+      return $self->SUPER::_order_by($_[0]);
+    }
   } elsif (ref $_[0] eq 'SCALAR') {
     $ret = $self->_sqlcase(' order by ').${ $_[0] };
   } elsif (ref $_[0] eq 'ARRAY' && @{$_[0]}) {
index 626cd49..5dd71a8 100644 (file)
@@ -9,7 +9,7 @@ BEGIN {
     eval "use DBD::SQLite";
     plan $@
         ? ( skip_all => 'needs DBD::SQLite for testing' )
-        : ( tests => 7 );
+        : ( tests => 8 );
 }
 
 use lib qw(t/lib);
@@ -72,12 +72,19 @@ is_same_sql_bind(
           ],
           undef,
           [
-            'year DESC'
+            { -desc => 'year' }
           ],
           undef,
           undef
 );
 
+is_same_sql_bind(
+  $sql, \@bind,
+  q/SELECT `me`.`cdid`, `me`.`artist`, `me`.`title`, `me`.`year` FROM `cd` `me` ORDER BY `year` DESC/, [],
+  'hashref ORDER BY okay'
+);
+
+
 ($sql, @bind) = $sql_maker->select(
       [
         {