diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2011-01-03 16:19:57 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-01-03 16:19:57 -0800 |
commit | f5e09790550fcb7d413d495be25f8fe74a571850 (patch) | |
tree | e69d675e1eec65a3c4dc3df5cf63350675bf633a | |
parent | ef29263428eb2aa1fdc2b6b020f0d153fd17b5f3 (diff) | |
download | rails-f5e09790550fcb7d413d495be25f8fe74a571850.tar.gz rails-f5e09790550fcb7d413d495be25f8fe74a571850.tar.bz2 rails-f5e09790550fcb7d413d495be25f8fe74a571850.zip |
adding better tests surrounding limits in adapter visitors
-rw-r--r-- | lib/arel/visitors/mysql.rb | 2 | ||||
-rw-r--r-- | lib/arel/visitors/postgresql.rb | 2 | ||||
-rw-r--r-- | test/visitors/test_mysql.rb | 4 | ||||
-rw-r--r-- | test/visitors/test_postgres.rb | 6 |
4 files changed, 8 insertions, 6 deletions
diff --git a/lib/arel/visitors/mysql.rb b/lib/arel/visitors/mysql.rb index b37d76f710..e90161eee4 100644 --- a/lib/arel/visitors/mysql.rb +++ b/lib/arel/visitors/mysql.rb @@ -25,7 +25,7 @@ module Arel ("SET #{o.values.map { |value| visit value }.join ', '}" unless o.values.empty?), ("WHERE #{o.wheres.map { |x| visit x }.join ' AND '}" unless o.wheres.empty?), ("ORDER BY #{o.orders.map { |x| visit x }.join(', ')}" unless o.orders.empty?), - ("LIMIT #{visit o.limit}" if o.limit), + (visit(o.limit) if o.limit), ].compact.join ' ' end diff --git a/lib/arel/visitors/postgresql.rb b/lib/arel/visitors/postgresql.rb index 01fbda75b9..0e82a703ca 100644 --- a/lib/arel/visitors/postgresql.rb +++ b/lib/arel/visitors/postgresql.rb @@ -17,7 +17,7 @@ module Arel [ "SELECT * FROM (#{sql}) AS id_list", "ORDER BY #{aliased_orders(o.orders).join(', ')}", - ("LIMIT #{visit o.limit}" if o.limit), + (visit(o.limit) if o.limit), (visit(o.offset) if o.offset), ].compact.join ' ' else diff --git a/test/visitors/test_mysql.rb b/test/visitors/test_mysql.rb index 135348580d..c3b79ca667 100644 --- a/test/visitors/test_mysql.rb +++ b/test/visitors/test_mysql.rb @@ -19,8 +19,8 @@ module Arel it "should escape LIMIT" do sc = Arel::Nodes::UpdateStatement.new - sc.limit = "omg" - assert_match(/LIMIT 'omg'/, @visitor.accept(sc)) + sc.limit = Nodes::Limit.new("omg") + assert_equal("UPDATE NULL LIMIT 'omg'", @visitor.accept(sc)) end it 'uses DUAL for empty from' do diff --git a/test/visitors/test_postgres.rb b/test/visitors/test_postgres.rb index b98f78ca12..6e8f399b6b 100644 --- a/test/visitors/test_postgres.rb +++ b/test/visitors/test_postgres.rb @@ -15,10 +15,12 @@ module Arel it "should escape LIMIT" do sc = Arel::Nodes::SelectStatement.new - sc.limit = "omg" + sc.limit = Nodes::Limit.new("omg") sc.cores.first.projections << 'DISTINCT ON' sc.orders << "xyz" - assert_match(/LIMIT 'omg'/, @visitor.accept(sc)) + sql = @visitor.accept(sc) + assert_match(/LIMIT 'omg'/, sql) + assert_equal 1, sql.scan(/LIMIT/).length, 'should have one limit' end end end |