method

add_limit_offset!

rails latest stable - Class: ActiveRecord::ConnectionAdapters::DB2Adapter

Method deprecated or moved

This method is deprecated or moved on the latest stable version. The last existing version (v1.2.6) is shown here.

add_limit_offset!(sql, options)
public

No documentation available.

# File activerecord/lib/active_record/connection_adapters/db2_adapter.rb, line 93
        def add_limit_offset!(sql, options)
          if limit = options[:limit]
            offset = options[:offset] || 0
            # The following trick was added by [email protected].
            sql.gsub!(/SELECT/i, 'SELECT B.* FROM (SELECT A.*, row_number() over () AS internal$rownum FROM (SELECT')
            sql << ") A ) B WHERE B.internal$rownum > #{offset} AND B.internal$rownum <= #{limit + offset}"
          end
        end

1Note

Why gsub!

benissimo ยท Apr 14, 2011

I notice other adapters use sql.sub!, not sql.gsub! and in fact I had trouble with adding the limit parameter to any query involving nested selects. Replacing sql.gsub! with sql.sub! solved that problem for me. Has anyone else had a similar experience with this method?

In other words, replace: sql.gsub!(/SELECT/i, 'SELECT B.* FROM (SELECT A., row_number() over () AS internal$rownum FROM (SELECT') With: sql.sub!(/SELECT/i, 'SELECT B. FROM (SELECT A.*, row_number() over () AS internal$rownum FROM (SELECT')