aboutsummaryrefslogblamecommitdiffstats
path: root/lib/arel/algebra/relations/operations/skip.rb
blob: 5a87fbb7b5225b59bcb4224e4ad1bb2312a19cc5 (plain) (tree)
1
2
           
                       























                                                                     



                                  
     
   
module Arel
  class Skip < Compound
    attr_reader :relation, :skipped

    def initialize relation, skipped
      super(relation)
      @skipped = skipped
    end

    def == other
      super ||
        Skip === other &&
        relation == other.relation &&
        skipped == other.skipped
    end

    def engine
      engine   = relation.engine

      # Temporary check of whether or not the engine supports where.
      if engine.respond_to?(:supports) && !engine.supports(:skipping)
        Memory::Engine.new
      else
        engine
      end
    end

    def eval
      unoperated_rows[skipped..-1]
    end
  end
end