diff --git a/lib/arel/nodes/delete_statement.rb b/lib/arel/nodes/delete_statement.rb
index <HASH>..<HASH> 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
Delete is not a NodeExpression, change parent

This requires a little cut and paste from the Binary node, but it is
used in different parts of sql