Created
May 14, 2011 02:33
-
-
Save AquaGeek/971734 to your computer and use it in GitHub Desktop.
Rails Lighthouse ticket #6058
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 4b1b962281fb018be81862d4398fddf3a82ecdcb Mon Sep 17 00:00:00 2001 | |
From: Neeraj Singh <neerajdotname@gmail.com> | |
Date: Wed, 24 Nov 2010 14:20:25 -0500 | |
Subject: [PATCH] failing test for #6058 | |
--- | |
activerecord/test/cases/persistence_test.rb | 6 ++++++ | |
1 files changed, 6 insertions(+), 0 deletions(-) | |
diff --git a/activerecord/test/cases/persistence_test.rb b/activerecord/test/cases/persistence_test.rb | |
index 8ca9d62..243a859 100644 | |
--- a/activerecord/test/cases/persistence_test.rb | |
+++ b/activerecord/test/cases/persistence_test.rb | |
@@ -62,6 +62,12 @@ class PersistencesTest < ActiveRecord::TestCase | |
assert_equal "bulk updated!", Topic.find(2).content | |
end | |
+ def test_update_by_condition_with_limit_and_order | |
+ Topic.update_all "content = 'bulk updated!'", ["approved = ?", true], :limit => 100, :order => 'id' | |
+ assert_equal "Have a nice day", Topic.find(1).content | |
+ assert_equal "bulk updated!", Topic.find(2).content | |
+ end | |
+ | |
def test_increment_attribute | |
assert_equal 50, accounts(:signals37).credit_limit | |
accounts(:signals37).increment! :credit_limit | |
-- | |
1.7.2 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From d8fe2e9dbf6070440e820e3b6b82242a34b4fffe Mon Sep 17 00:00:00 2001 | |
From: Hugo Peixoto <hugo.peixoto@gmail.com> | |
Date: Sun, 6 Mar 2011 10:28:46 +0000 | |
Subject: [PATCH] Fixes rails bug #6058. | |
Propagates 'where' clauses when subquerying is triggered on the UpdateManager. | |
--- | |
lib/arel/visitors/to_sql.rb | 1 + | |
test/test_select_manager.rb | 14 ++++++++++++++ | |
2 files changed, 15 insertions(+), 0 deletions(-) | |
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb | |
index f76c149..035d906 100644 | |
--- a/lib/arel/visitors/to_sql.rb | |
+++ b/lib/arel/visitors/to_sql.rb | |
@@ -35,6 +35,7 @@ module Arel | |
stmt = Nodes::SelectStatement.new | |
core = stmt.cores.first | |
core.froms = o.relation | |
+ core.wheres = o.wheres | |
core.projections = [key] | |
stmt.limit = o.limit | |
stmt.orders = o.orders | |
diff --git a/test/test_select_manager.rb b/test/test_select_manager.rb | |
index 2fe43aa..410fe38 100644 | |
--- a/test/test_select_manager.rb | |
+++ b/test/test_select_manager.rb | |
@@ -713,6 +713,20 @@ module Arel | |
} | |
end | |
+ it 'copies where clauses when nesting is triggered' do | |
+ engine = EngineProxy.new Table.engine | |
+ table = Table.new :users | |
+ manager = Arel::SelectManager.new engine | |
+ manager.where table[:foo].eq 10 | |
+ manager.take 42 | |
+ manager.from table | |
+ stmt = manager.compile_update(table[:id] => 1) | |
+ | |
+ stmt.to_sql.must_be_like %{ | |
+ UPDATE "users" SET "id" = 1 WHERE "users"."id" IN (SELECT "users"."id" FROM "users" WHERE "users"."foo" = 10 LIMIT 42) | |
+ } | |
+ end | |
+ | |
it 'executes an update statement' do | |
engine = EngineProxy.new Table.engine | |
table = Table.new :users | |
-- | |
1.7.1 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From ebcb274e6acbc19698d97909460285555fe395cd Mon Sep 17 00:00:00 2001 | |
From: Hugo Peixoto <hugo.peixoto@gmail.com> | |
Date: Sun, 6 Mar 2011 10:28:46 +0000 | |
Subject: [PATCH] Fixes rails bug #6058. | |
Propagates 'where' clauses when subquerying is triggered on the UpdateManager. | |
--- | |
lib/arel/visitors/to_sql.rb | 1 + | |
test/test_select_manager.rb | 14 ++++++++++++++ | |
2 files changed, 15 insertions(+), 0 deletions(-) | |
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb | |
index 2a07a82..18b9d50 100644 | |
--- a/lib/arel/visitors/to_sql.rb | |
+++ b/lib/arel/visitors/to_sql.rb | |
@@ -35,6 +35,7 @@ module Arel | |
stmt = Nodes::SelectStatement.new | |
core = stmt.cores.first | |
core.froms = o.relation | |
+ core.wheres = o.wheres | |
core.projections = [o.relation.primary_key] | |
stmt.limit = o.limit | |
stmt.orders = o.orders | |
diff --git a/test/test_select_manager.rb b/test/test_select_manager.rb | |
index f4a07f4..15185ee 100644 | |
--- a/test/test_select_manager.rb | |
+++ b/test/test_select_manager.rb | |
@@ -499,6 +499,20 @@ module Arel | |
} | |
end | |
+ it 'copies where clauses when nesting is triggered' do | |
+ engine = EngineProxy.new Table.engine | |
+ table = Table.new :users | |
+ manager = Arel::SelectManager.new engine | |
+ manager.where table[:name].eq 'foo' | |
+ manager.take 42 | |
+ manager.from table | |
+ stmt = manager.update(table[:id] => 1) | |
+ | |
+ engine.executed.last.must_be_like %{ | |
+ UPDATE "users" SET "id" = 1 WHERE "users"."id" IN (SELECT "users"."id" FROM "users" WHERE "users"."name" = 'foo' LIMIT 42) | |
+ } | |
+ end | |
+ | |
it 'executes an update statement' do | |
engine = EngineProxy.new Table.engine | |
table = Table.new :users | |
-- | |
1.7.1 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 4b0b9a95bcda37c43780cbab341191608ad9fea8 Mon Sep 17 00:00:00 2001 | |
From: Hugo Peixoto <hugo.peixoto@gmail.com> | |
Date: Sat, 5 Mar 2011 22:34:03 +0000 | |
Subject: [PATCH] Fixes rails bug #6058. | |
Propagates 'where' clauses when subquerying is triggered on the UpdateManager. | |
--- | |
lib/arel/visitors/to_sql.rb | 2 +- | |
test/test_select_manager.rb | 14 ++++++++++++++ | |
2 files changed, 15 insertions(+), 1 deletions(-) | |
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb | |
index f76c149..51a6fd1 100644 | |
--- a/lib/arel/visitors/to_sql.rb | |
+++ b/lib/arel/visitors/to_sql.rb | |
@@ -55,7 +55,7 @@ key on UpdateManager using UpdateManager#key= | |
key = o.relation.primary_key | |
end | |
- wheres = [Nodes::In.new(key, [build_subselect(key, o)])] | |
+ wheres = o.wheres + [Nodes::In.new(key, [build_subselect(key, o)])] | |
end | |
[ | |
diff --git a/test/test_select_manager.rb b/test/test_select_manager.rb | |
index 2fe43aa..13a719a 100644 | |
--- a/test/test_select_manager.rb | |
+++ b/test/test_select_manager.rb | |
@@ -713,6 +713,20 @@ module Arel | |
} | |
end | |
+ it 'copies where clauses when nesting is triggered' do | |
+ engine = EngineProxy.new Table.engine | |
+ table = Table.new :users | |
+ manager = Arel::SelectManager.new engine | |
+ manager.where table[:foo].eq 10 | |
+ manager.take 42 | |
+ manager.from table | |
+ stmt = manager.compile_update(table[:id] => 1) | |
+ | |
+ stmt.to_sql.must_be_like %{ | |
+ UPDATE "users" SET "id" = 1 WHERE "users"."foo" = 10 AND "users"."id" IN (SELECT "users"."id" FROM "users" LIMIT 42) | |
+ } | |
+ end | |
+ | |
it 'executes an update statement' do | |
engine = EngineProxy.new Table.engine | |
table = Table.new :users | |
-- | |
1.7.1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment