提交 f3ebbeae 编写于 作者: A Aaron Patterson

avoid creating a set if no where values are removed

上级 50823452
......@@ -131,6 +131,8 @@ def merge_single_values
end
def filter_binds(lhs_binds, removed_wheres)
return lhs_binds if removed_wheres.empty?
set = Set.new removed_wheres.map { |x| x.left.name }
lhs_binds.dup.delete_if { |col,_| set.include? col.name }
end
......
......@@ -1556,4 +1556,16 @@ def test_merging_removes_rhs_bind_parameters
merged = left.merge(right)
assert_equal [], merged.bind_values
end
def test_merging_keeps_lhs_bind_parameters
column = Post.columns_hash['id']
binds = [[column, 20]]
right = Post.where(id: Arel::Nodes::BindParam.new('?'))
right.bind_values += binds
left = Post.where(id: 10)
merged = left.merge(right)
assert_equal binds, merged.bind_values
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册