class Arel::Nodes::Window
def eql?(other)
def eql?(other) self.class == other.class && self.orders == other.orders && self.framing == other.framing && self.partitions == other.partitions end
def frame(expr)
def frame(expr) @framing = expr end
def hash
def hash [@orders, @framing].hash end
def initialize
def initialize @orders = [] @partitions = [] @framing = nil end
def initialize_copy(other)
def initialize_copy(other) super @orders = @orders.map { |x| x.clone } end
def order(*expr)
def order(*expr) # FIXME: We SHOULD NOT be converting these to SqlLiteral automatically @orders.concat expr.map { |x| String === x || Symbol === x ? Nodes::SqlLiteral.new(x.to_s) : x } self end
def partition(*expr)
def partition(*expr) # FIXME: We SHOULD NOT be converting these to SqlLiteral automatically @partitions.concat expr.map { |x| String === x || Symbol === x ? Nodes::SqlLiteral.new(x.to_s) : x } self end
def range(expr = nil)
def range(expr = nil) if @framing Range.new(expr) else frame(Range.new(expr)) end end
def rows(expr = nil)
def rows(expr = nil) if @framing Rows.new(expr) else frame(Rows.new(expr)) end end