method
add_limit_offset!
rails latest stable - Class:
ActiveRecord::ConnectionAdapters::DB2Adapter
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!
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')