Commit another fix for arcanez to test
Rob Kinyon [Thu, 19 Mar 2009 20:52:54 +0000 (20:52 +0000)]
lib/DBIx/Class/CDBICompat/Retrieve.pm

index b2e891d..564583a 100644 (file)
@@ -50,15 +50,24 @@ sub retrieve_from_sql {
 
   $cond =~ s/^\s*WHERE//i;
 
-  if( $cond =~ s/\bLIMIT (\d+)\s*$//i ) {
-      push @rest, { rows => $1 };
+  # Need to parse the SQL clauses after WHERE in reverse
+  # order of appearance.
+
+  my %attrs;
+
+  if( $cond =~ s/\bLIMIT\s+(\d+)\s*$//i ) {
+      $attrs{rows} = $1;
+  }
+
+  if ( $cond =~ s/\bORDER\s+BY\s+(.*)\s*$//i ) {
+      $attrs{order_by} = $1;
   }
 
-  if ( $cond =~ s/\bORDER\s+BY\s+(.*)$//i ) {
-    push @rest, { order_by => $1 };
+  if( $cond =~ s/\bGROUP\s+BY\s+(.*)\s*$//i ) {
+      $attrs{group_by} = $1;
   }
 
-  return $class->search_literal($cond, @rest);
+  return $class->search_literal($cond, ( %attrs || () ) );
 }
 
 sub construct {