diff -ru activerecord-1.15.3/lib/active_record/connection_adapters/abstract/database_statements.rb activerecord-patched/lib/active_record/connection_adapters/abstract/database_statements.rb
--- activerecord-1.15.3/lib/active_record/connection_adapters/abstract/database_statements.rb	2008-06-16 12:14:31.000000000 +0200
+++ activerecord-patched/lib/active_record/connection_adapters/abstract/database_statements.rb	2008-06-16 12:13:36.000000000 +0200
@@ -92,12 +92,16 @@
       #  SELECT * FROM suppliers LIMIT 10 OFFSET 50
       def add_limit_offset!(sql, options)
         if limit = options[:limit]
-          sql << " LIMIT #{limit}"
+          sql << " LIMIT #{sanitize_limit(limit)}"
           if offset = options[:offset]
-            sql << " OFFSET #{offset}"
+            sql << " OFFSET #{offset.to_i}"
           end
         end
       end
+      
+      def sanitize_limit(limit)
+        limit.to_s[/,/] ? limit.split(',').map{ |i| i.to_i }.join(',') : limit.to_i
+      end
 
       # Appends a locking clause to a SQL statement. *Modifies the +sql+ parameter*.
       #   # SELECT * FROM suppliers FOR UPDATE
diff -ru activerecord-1.15.3/lib/active_record/connection_adapters/mysql_adapter.rb activerecord-patched/lib/active_record/connection_adapters/mysql_adapter.rb
--- activerecord-1.15.3/lib/active_record/connection_adapters/mysql_adapter.rb	2008-06-16 12:14:31.000000000 +0200
+++ activerecord-patched/lib/active_record/connection_adapters/mysql_adapter.rb	2008-06-16 12:14:03.000000000 +0200
@@ -281,9 +281,9 @@
       def add_limit_offset!(sql, options) #:nodoc:
         if limit = options[:limit]
           unless offset = options[:offset]
-            sql << " LIMIT #{limit}"
+            sql << " LIMIT #{sanitize_limit(limit)}"
           else
-            sql << " LIMIT #{offset}, #{limit}"
+            sql << " LIMIT #{offset.to_i}, #{limit.to_i}"
           end
         end
       end
