mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
6e43a207c6
This partly reverts #35617. #35617 includes unused code (for `InsertStatement`) and re-using query annotation for `update_all` and `delete_all`, which has not been discussed yet. If a relation has any annotation, I think it is mostly for SELECT query, so re-using annotation by default is not always desired behavior for me. We should discuss about desired behavior before publishing the implementation.
41 lines
1,008 B
Ruby
41 lines
1,008 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Arel # :nodoc: all
|
|
module Nodes
|
|
class UpdateStatement < Arel::Nodes::Node
|
|
attr_accessor :relation, :wheres, :values, :orders, :limit, :offset, :key
|
|
|
|
def initialize
|
|
@relation = nil
|
|
@wheres = []
|
|
@values = []
|
|
@orders = []
|
|
@limit = nil
|
|
@offset = nil
|
|
@key = nil
|
|
end
|
|
|
|
def initialize_copy(other)
|
|
super
|
|
@wheres = @wheres.clone
|
|
@values = @values.clone
|
|
end
|
|
|
|
def hash
|
|
[@relation, @wheres, @values, @orders, @limit, @offset, @key].hash
|
|
end
|
|
|
|
def eql?(other)
|
|
self.class == other.class &&
|
|
self.relation == other.relation &&
|
|
self.wheres == other.wheres &&
|
|
self.values == other.values &&
|
|
self.orders == other.orders &&
|
|
self.limit == other.limit &&
|
|
self.offset == other.offset &&
|
|
self.key == other.key
|
|
end
|
|
alias :== :eql?
|
|
end
|
|
end
|
|
end
|