class Arel::Visitors::Fb
Private Instance Methods
limit_offset(o)
click to toggle source
Firebird helpers
# File lib/arel/visitors/fb.rb, line 36 def limit_offset(o) "ROWS #{visit(o.offset.expr) + 1} TO #{visit(o.offset.expr) + visit(o.limit.expr)}" end
limit_with_rows(o, collector)
click to toggle source
Firebird helper
# File lib/arel/visitors/fb_collector.rb, line 86 def limit_with_rows o, collector collector << " ROWS " visit o.offset.expr + 1, collector collector << " TO " visit o.offset.expr + o.limit.expr, collector end
visit_Arel_Nodes_Limit(o, *a)
click to toggle source
# File lib/arel/visitors/fb.rb, line 26 def visit_Arel_Nodes_Limit o, *a "ROWS #{visit(o.expr)}" end
visit_Arel_Nodes_Offset(o, *a)
click to toggle source
# File lib/arel/visitors/fb.rb, line 30 def visit_Arel_Nodes_Offset o, *a "SKIP #{visit(o.expr)}" end
visit_Arel_Nodes_SelectCore(o, collector)
click to toggle source
# File lib/arel/visitors/fb_collector.rb, line 33 def visit_Arel_Nodes_SelectCore o, collector if o.set_quantifier collector = visit o.set_quantifier, collector collector << SPACE end unless o.projections.empty? len = o.projections.length - 1 o.projections.each_with_index do |x, i| collector = visit(x, collector) collector << COMMA unless len == i end end if o.source && !o.source.empty? collector << " FROM " collector = visit o.source, collector end unless o.wheres.empty? collector << WHERE len = o.wheres.length - 1 o.wheres.each_with_index do |x, i| collector = visit(x, collector) collector << AND unless len == i end end unless o.groups.empty? collector << GROUP_BY len = o.groups.length - 1 o.groups.each_with_index do |x, i| collector = visit(x, collector) collector << COMMA unless len == i end end collector = maybe_visit o.having, collector collector end
visit_Arel_Nodes_SelectStatement(o, *a)
click to toggle source
# File lib/arel/visitors/fb.rb, line 6 def visit_Arel_Nodes_SelectStatement o, *a select_core = o.cores.map { |x| visit_Arel_Nodes_SelectCore(x, *a) }.join select_core.sub!(/^\s*SELECT/i, "SELECT #{visit(o.offset)}") if o.offset && !o.limit [ select_core, ("ORDER BY #{o.orders.map { |x| visit(x) }.join(', ')}" unless o.orders.empty?), (limit_offset(o) if o.limit && o.offset), (visit(o.limit) if o.limit && !o.offset), ].compact.join ' ' end
visit_Arel_Nodes_UpdateStatement(o, *a)
click to toggle source
# File lib/arel/visitors/fb.rb, line 17 def visit_Arel_Nodes_UpdateStatement o, *a [ "UPDATE #{visit o.relation}", ("SET #{o.values.map { |value| visit(value) }.join ', '}" unless o.values.empty?), ("WHERE #{o.wheres.map { |x| visit(x) }.join ' AND '}" unless o.wheres.empty?), (visit(o.limit) if o.limit), ].compact.join ' ' end