Class | Sequel::JDBC::AS400::Dataset |
In: |
lib/sequel/adapters/jdbc/as400.rb
|
Parent: | JDBC::Dataset |
WILDCARD | = | Sequel::LiteralString.new('*').freeze |
Modify the sql to limit the number of rows returned
# File lib/sequel/adapters/jdbc/as400.rb, line 81 81: def select_limit_sql(sql) 82: if @opts[:limit] 83: sql << " FETCH FIRST ROW ONLY" if @opts[:limit] == 1 84: sql << " FETCH FIRST #{@opts[:limit]} ROWS ONLY" if @opts[:limit] > 1 85: end 86: end
AS400 needs to use a couple of subselects for queries with offsets.
# File lib/sequel/adapters/jdbc/as400.rb, line 63 63: def select_sql 64: return super unless o = @opts[:offset] 65: l = @opts[:limit] 66: order = @opts[:order] 67: dsa1 = dataset_alias(1) 68: dsa2 = dataset_alias(2) 69: rn = row_number_column 70: irn = Sequel::SQL::Identifier.new(rn).qualify(dsa2) 71: subselect_sql(unlimited. 72: from_self(:alias=>dsa1). 73: select_more(Sequel::SQL::QualifiedIdentifier.new(dsa1, WILDCARD), 74: Sequel::SQL::WindowFunction.new(SQL::Function.new(:ROW_NUMBER), Sequel::SQL::Window.new(:order=>order)).as(rn)). 75: from_self(:alias=>dsa2). 76: select(Sequel::SQL::QualifiedIdentifier.new(dsa2, WILDCARD)). 77: where(l ? ((irn > o) & (irn <= l + o)) : (irn > o))) # Leave off limit in case of limit(nil, offset) 78: end