aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/arel/nodes/binary.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/arel/nodes/binary.rb')
-rw-r--r--activerecord/lib/arel/nodes/binary.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/activerecord/lib/arel/nodes/binary.rb b/activerecord/lib/arel/nodes/binary.rb
new file mode 100644
index 0000000000..a86d4e4696
--- /dev/null
+++ b/activerecord/lib/arel/nodes/binary.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+module Arel
+ module Nodes
+ class Binary < Arel::Nodes::NodeExpression
+ attr_accessor :left, :right
+
+ def initialize left, right
+ super()
+ @left = left
+ @right = right
+ end
+
+ def initialize_copy other
+ super
+ @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
+
+ %w{
+ As
+ Assignment
+ Between
+ GreaterThan
+ GreaterThanOrEqual
+ Join
+ LessThan
+ LessThanOrEqual
+ NotEqual
+ NotIn
+ Or
+ Union
+ UnionAll
+ Intersect
+ Except
+ }.each do |name|
+ const_set name, Class.new(Binary)
+ end
+ end
+end