Method: Alf::Sql::Compiler#on_page

Defined in:
lib/alf/sql/compiler.rb

#on_page(plan, expr, compiled) ⇒ Object



80
81
82
83
84
85
86
87
88
# File 'lib/alf/sql/compiler.rb', line 80

def on_page(plan, expr, compiled)
  index, size = expr.page_index, expr.page_size
  compiled = plan.recompile(compiled){|p|
    ordering = expr.total_ordering
    ordering = ordering.reverse if index < 0
    p.sort(expr.operand, ordering)
  }
  rewrite(plan, expr, compiled, Processor::LimitOffset, [size, (index.abs - 1) * size])
end