From: Guillermo Roditi Date: Thu, 15 May 2008 20:07:12 +0000 (+0000) Subject: bumped version but not $REVISION. small fix to order_by plus more tests. docs pending X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f5aab26e2b99e10c82871a0f36a9e4773684ade7;p=scpubgit%2FQ-Branch.git bumped version but not $REVISION. small fix to order_by plus more tests. docs pending --- diff --git a/Changes b/Changes index 9c45927..9eb8103 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ Revision history for SQL::Abstract - Added { -desc => 'column' } order by support (Ash) + - Tiny fix for { -desc => 'columns'} order by support + tests (groditi) ---------------------------- revision 1.20 diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index af8716a..102958f 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -143,7 +143,8 @@ clause) to try and simplify things. use Carp; use strict; -our $VERSION = '1.22'; +our $VERSION = '1.23'; +#XXX don't understand this below, leaving it for someone else. did bump the $VERSION --groditi our $REVISION = '$Id$'; our $AUTOLOAD; @@ -852,9 +853,10 @@ sub _order_by { my $_order_hash = sub { local *__ANON__ = '_order_by_hash'; my ($col, $order); - if ( $col = $_->{-desc} ) { + my $hash = shift; # $_ was failing in some cases for me --groditi + if ( $col = $hash->{'-desc'} ) { $order = 'DESC' - } elsif ( $col = $_->{-asc} ) { + } elsif ( $col = $hash->{'-asc'} ) { $order = 'ASC'; } else { puke "Hash must have a key of '-desc' or '-asc' for ORDER BY"; @@ -1360,7 +1362,7 @@ so I have no idea who they are! But the people I do know are: Eric Kolve (hashref "AND" support) Mike Fragassi (enhancements to "BETWEEN" and "LIKE") Dan Kubb (support for "quote_char" and "name_sep") - Guillermo Roditi (patch to cleanup "IN" and "BETWEEN") + Guillermo Roditi (patch to cleanup "IN" and "BETWEEN", fix and tests for _order_by) Thanks! diff --git a/t/06order_by.t b/t/06order_by.t new file mode 100644 index 0000000..2fdd43a --- /dev/null +++ b/t/06order_by.t @@ -0,0 +1,51 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use Test::More; + +use SQL::Abstract; + +my @cases = + ( + { + given => \'colA DESC', + expects => ' ORDER BY colA DESC', + expects_quoted => ' ORDER BY colA DESC', + }, + { + given => 'colA', + expects => ' ORDER BY colA', + expects_quoted => ' ORDER BY `colA`', + }, + { + given => [qw/colA colB/], + expects => ' ORDER BY colA, colB', + expects_quoted => ' ORDER BY `colA`, `colB`', + }, + { + given => {-asc => 'colA'}, + expects => ' ORDER BY colA ASC', + expects_quoted => ' ORDER BY `colA` ASC', + }, + { + given => {-desc => 'colB'}, + expects => ' ORDER BY colB DESC', + expects_quoted => ' ORDER BY `colB` DESC', + }, + { + given => [{-asc => 'colA'}, {-desc => 'colB'}], + expects => ' ORDER BY colA ASC, colB DESC', + expects_quoted => ' ORDER BY `colA` ASC, `colB` DESC', + }, + ); + +my $sql = SQL::Abstract->new; +my $sqlq = SQL::Abstract->new({quote_char => '`'}); + +plan tests => (scalar(@cases) * 2); + +for my $case( @cases){ + is($sql->_order_by($case->{given}), $case->{expects}); + is($sqlq->_order_by($case->{given}), $case->{expects_quoted}); +}