mirror of https://github.com/rails/rails
Inform Arel that we don't need additional type casting in batching
Part of the larger refactoring to remove type casting from Arel. We can inform it that we already have the right type by wrapping the value in an `Arel::Nodes::Quoted`. This commit can be reverted when we have removed type casting from Arel in Rail 5.1
This commit is contained in:
parent
15e2d5043f
commit
50d7e448e8
|
@ -102,9 +102,15 @@ module ActiveRecord
|
|||
start = options[:start]
|
||||
batch_size = options[:batch_size] || 1000
|
||||
|
||||
if start
|
||||
# FIXME: Remove this when type casting is removed from Arel
|
||||
# (Rails 5.1). We can pass start directly instead.
|
||||
quoted_start = Arel::Nodes::Quoted.new(start)
|
||||
end
|
||||
|
||||
unless block_given?
|
||||
return to_enum(:find_in_batches, options) do
|
||||
total = start ? where(table[primary_key].gteq(start)).size : size
|
||||
total = start ? where(table[primary_key].gteq(quoted_start)).size : size
|
||||
(total - 1).div(batch_size) + 1
|
||||
end
|
||||
end
|
||||
|
@ -114,7 +120,7 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
relation = relation.reorder(batch_order).limit(batch_size)
|
||||
records = start ? relation.where(table[primary_key].gteq(start)).to_a : relation.to_a
|
||||
records = start ? relation.where(table[primary_key].gteq(quoted_start)).to_a : relation.to_a
|
||||
|
||||
while records.any?
|
||||
records_size = records.size
|
||||
|
|
Loading…
Reference in New Issue