[Bast-commits] r6029 - in SQL-Abstract/1.x/trunk: lib/SQL t

ribasushi at dev.catalyst.perl.org ribasushi at dev.catalyst.perl.org
Wed Apr 29 22:49:12 GMT 2009


Author: ribasushi
Date: 2009-04-29 23:49:12 +0100 (Wed, 29 Apr 2009)
New Revision: 6029

Modified:
   SQL-Abstract/1.x/trunk/lib/SQL/Abstract.pm
   SQL-Abstract/1.x/trunk/t/04modifiers.t
Log:
Make sure hash key sorting is maintained throughout SQLA
Adjust tests accordingly

Modified: SQL-Abstract/1.x/trunk/lib/SQL/Abstract.pm
===================================================================
--- SQL-Abstract/1.x/trunk/lib/SQL/Abstract.pm	2009-04-29 20:28:10 UTC (rev 6028)
+++ SQL-Abstract/1.x/trunk/lib/SQL/Abstract.pm	2009-04-29 22:49:12 UTC (rev 6029)
@@ -422,7 +422,6 @@
   my ($self, $where) = @_;
   my (@sql_clauses, @all_bind);
 
-  # LDNOTE : don't really know why we need to sort keys
   for my $k (sort keys %$where) { 
     my $v = $where->{$k};
 
@@ -463,7 +462,7 @@
 
     HASHREF => sub {
       if ($op eq 'OR') {
-        return $self->_where_ARRAYREF([%$v], 'OR');
+        return $self->_where_ARRAYREF([ map { $_ => $v->{$_} } (sort keys %$v) ], 'OR');
       } 
       else {                  # NEST | AND
         return $self->_where_HASHREF($v);

Modified: SQL-Abstract/1.x/trunk/t/04modifiers.t
===================================================================
--- SQL-Abstract/1.x/trunk/t/04modifiers.t	2009-04-29 20:28:10 UTC (rev 6028)
+++ SQL-Abstract/1.x/trunk/t/04modifiers.t	2009-04-29 22:49:12 UTC (rev 6029)
@@ -176,8 +176,8 @@
 
   {
     where => { -and => [a => 1, b => 2, k => [11, 12] ], x => 9, -or => { c => 3, d => 4, l => { '=' => [21, 22] } } },
-    stmt => 'WHERE a = ? AND b = ? AND (k = ? OR k = ?) AND ((l = ? OR l = ?) OR c = ? OR d = ? ) AND x = ?',
-    bind => [qw/1 2 11 12 21 22 3 4 9/],
+    stmt => 'WHERE a = ? AND b = ? AND (k = ? OR k = ?) AND (c = ? OR d = ? OR (l = ? OR l = ?) ) AND x = ?',
+    bind => [qw/1 2 11 12 3 4 21 22 9/],
   },
 
   {
@@ -196,8 +196,8 @@
     # explicit OR logic in arrays should leave everything intact
     args => { logic => 'or' },
     where => { -and => [a => 1, b => 2, k => [11, 12] ], x => 9, -or => { c => 3, d => 4, l => { '=' => [21, 22] } }  },
-    stmt => 'WHERE a = ? AND b = ? AND (k = ? OR k = ?) AND ( l = ? OR l = ? OR c = ? OR d = ? ) AND x = ? ',
-    bind => [qw/1 2 11 12 21 22 3 4 9/],
+    stmt => 'WHERE a = ? AND b = ? AND (k = ? OR k = ?) AND ( c = ? OR d = ? OR l = ? OR l = ? ) AND x = ? ',
+    bind => [qw/1 2 11 12 3 4 21 22 9/],
   },
 
   {
@@ -361,8 +361,8 @@
  },
  {
    where => {a => 1, -nest => {-or => {b => 2, c => 3}}},
-   stmt  => 'WHERE ( ( (c = ? OR b = ?) AND a = ? ) )',
-   bind  => [qw/3 2 1/],
+   stmt  => 'WHERE ( ( (b = ? OR c = ?) AND a = ? ) )',
+   bind  => [qw/2 3 1/],
  },
  {
    where => [a => 1, -nest => {b => 2, c => 3}, -nest => [d => 4, e => 5]],




More information about the Bast-commits mailing list