Fix order clauses with bind parameters in ->where
Dagfinn Ilmari Mannsåker [Sun, 28 Jun 2015 13:32:28 +0000 (14:32 +0100)]
->where was ignoring the bind parameters returned by ->_order_by

Changes
lib/SQL/Abstract.pm
t/06order_by.t

diff --git a/Changes b/Changes
index 771d14c..abc4287 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,7 @@
 Revision history for SQL::Abstract
 
+    - Fix order clauses with bind parameters in ->where
+
 revision 1.81  2014-10-25
 ----------------------------
     - Fix overly-enthusiastic parenthesis unroller (RT#99503)
index 7e12187..d213115 100644 (file)
@@ -488,7 +488,9 @@ sub where {
 
   # order by?
   if ($order) {
-    $sql .= $self->_order_by($order);
+    my ($order_sql, @order_bind) = $self->_order_by($order);
+    $sql .= $order_sql;
+    push @bind, @order_bind;
   }
 
   return wantarray ? ($sql, @bind) : $sql;
index 4236e70..42abaa6 100644 (file)
@@ -110,7 +110,7 @@ my $sqlq = SQL::Abstract->new({quote_char => '`'});
 for my $case( @cases) {
   my ($stat, @bind);
 
-  ($stat, @bind) = $sql->_order_by($case->{given});
+  ($stat, @bind) = $sql->where(undef, $case->{given});
   is_same_sql_bind (
     $stat,
     \@bind,
@@ -118,7 +118,7 @@ for my $case( @cases) {
     $case->{bind} || [],
   );
 
-  ($stat, @bind) = $sqlq->_order_by($case->{given});
+  ($stat, @bind) = $sqlq->where(undef, $case->{given});
   is_same_sql_bind (
     $stat,
     \@bind,