Sha256: 24eeef2c090abfbbfca19a9d7b5e1c1bc4ea00a6581b0545676b778dae969602

Contents?: true

Size: 658 Bytes

Versions: 4

Compression:

Stored size: 658 Bytes

Contents

require 'arel/visitors/compat'

module Arel
  module Visitors
    class Firebird < Arel::Visitors::ToSql

      def visit_Arel_Nodes_SelectStatement o, a = nil
        lim_off = [
          ("FIRST #{do_visit o.limit.expr, a}" if o.limit),
          ("SKIP #{do_visit o.offset.expr, a}" if o.offset)
        ].compact.join(' ').strip

        sql = [
         o.cores.map { |x| do_visit_select_core x, a }.join,
         ("ORDER BY #{o.orders.map { |x| do_visit x, a }.join(', ')}" unless o.orders.empty?),
        ].compact.join ' '

        sql.sub!(/\A(\s*SELECT\s)/i, '\&' + lim_off + ' ') unless lim_off.empty?

        sql
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
activerecord-jdbc-adapter-1.3.7 lib/arel/visitors/firebird.rb
activerecord-jdbc-adapter-1.3.6 lib/arel/visitors/firebird.rb
activerecord-jdbc-adapter-1.3.5 lib/arel/visitors/firebird.rb
activerecord-jdbc-adapter-1.3.4 lib/arel/visitors/firebird.rb