aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-04-26 20:03:03 +0900
committerRyuta Kamizono <kamipo@gmail.com>2019-04-27 21:43:57 +0900
commit20ede2e2e6e28cf26da4d056cd7638b27d48ed57 (patch)
tree0c8d93b49aa2d2d015f34279316e5bfa7dcb2985 /activerecord/test/cases/associations
parentbbc3704bb38d9739d46d94d12a2a854f47b52cbe (diff)
downloadrails-20ede2e2e6e28cf26da4d056cd7638b27d48ed57.tar.gz
rails-20ede2e2e6e28cf26da4d056cd7638b27d48ed57.tar.bz2
rails-20ede2e2e6e28cf26da4d056cd7638b27d48ed57.zip
Fix merging left_joins to maintain its own `join_type` context
This fixes a regression for #35864. Usually, stashed joins (mainly eager loading) are performed as LEFT JOINs. But the case of merging joins/left_joins of different class, that (stashed) joins are performed as the same `join_type` as the parent context for now. Since #35864, both (joins/left_joins) stashed joins might be contained in `joins_values`, so each stashed joins should maintain its own `join_type` context. Fixes #36103.
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r--activerecord/test/cases/associations/left_outer_join_association_test.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/left_outer_join_association_test.rb b/activerecord/test/cases/associations/left_outer_join_association_test.rb
index 0a8863c35d..d44c6407f5 100644
--- a/activerecord/test/cases/associations/left_outer_join_association_test.rb
+++ b/activerecord/test/cases/associations/left_outer_join_association_test.rb
@@ -32,6 +32,10 @@ class LeftOuterJoinAssociationTest < ActiveRecord::TestCase
assert_equal 17, Post.left_outer_joins(:comments).count
end
+ def test_merging_left_joins_should_be_left_joins
+ assert_equal 5, Author.left_joins(:posts).merge(Post.no_comments).count
+ end
+
def test_left_joins_aliases_left_outer_joins
assert_equal Post.left_outer_joins(:comments).to_sql, Post.left_joins(:comments).to_sql
end