aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/nodes/delete_statement.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/nodes/delete_statement.rb')
-rw-r--r--lib/arel/nodes/delete_statement.rb21
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/arel/nodes/delete_statement.rb b/lib/arel/nodes/delete_statement.rb
index 593ce9bddf..063a5341e5 100644
--- a/lib/arel/nodes/delete_statement.rb
+++ b/lib/arel/nodes/delete_statement.rb
@@ -1,7 +1,8 @@
# frozen_string_literal: true
module Arel
module Nodes
- class DeleteStatement < Arel::Nodes::Binary
+ class DeleteStatement < Arel::Nodes::Node
+ attr_accessor :left, :right
attr_accessor :limit
alias :relation :left
@@ -10,13 +11,27 @@ module Arel
alias :wheres= :right=
def initialize relation = nil, wheres = []
- super
+ super()
+ @left = relation
+ @right = wheres
end
def initialize_copy other
super
- @right = @right.clone
+ @left = @left.clone if @left
+ @right = @right.clone if @right
+ end
+
+ def hash
+ [self.class, @left, @right].hash
+ end
+
+ def eql? other
+ self.class == other.class &&
+ self.left == other.left &&
+ self.right == other.right
end
+ alias :== :eql?
end
end
end