Changeset 68

Show
Ignore:
Timestamp:
05/04/06 00:05:02 (4 years ago)
Author:
sky
Message:

r71@crucially-3 (orig r1013): mpaschal | 2005-11-08 10:54:55 -0800
proposed multiple ORDER BY support?

Location:
trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/Data/ObjectDriver/SQL.pm

    r20 r68  
    3131    $sql .= $stmt->as_sql_where; 
    3232    if (my $order = $stmt->order) { 
    33         $sql .= 'ORDER BY ' . $order->{column} . ' ' . $order->{desc} . "\n"; 
     33        my $orders = (ref($order) eq 'ARRAY') ? $order : [ $order ]; 
     34        $sql .= 'ORDER BY ' 
     35            . join(', ', map { $_->{column} . ' ' . $_->{desc} } @$orders) 
     36            . "\n"; 
    3437    } 
    3538    if (my $n = $stmt->limit) { 
  • trunk/t/11-sql.t

    r54 r68  
    2828$stmt->from([ 'foo' ]); 
    2929$stmt->order({ column => 'baz', desc => 'DESC' }); 
    30 is($stmt->as_sql, "FROM foo\nORDER BY baz DESC\n"); 
     30is($stmt->as_sql, "FROM foo\nORDER BY baz DESC\n", 'single order by'); 
     31 
     32$stmt = ns(); 
     33$stmt->from([ 'foo' ]); 
     34$stmt->order([ { column => 'baz',  desc => 'DESC' }, 
     35               { column => 'quux', desc => 'ASC'  }, ]); 
     36is($stmt->as_sql, "FROM foo\nORDER BY baz DESC, quux ASC\n", 'multiple order by'); 
    3137 
    3238## Testing LIMIT and OFFSET