001package io.ebean.config.dbplatform.db2; 002 003import io.ebean.config.dbplatform.SqlLimitRequest; 004import io.ebean.config.dbplatform.SqlLimitResponse; 005import io.ebean.config.dbplatform.SqlLimiter; 006 007public class Db2SqlLimiter implements SqlLimiter { 008 009 @Override 010 public SqlLimitResponse limit(SqlLimitRequest request) { 011 012 StringBuilder sb = new StringBuilder(512); 013 sb.append("select "); 014 if (request.isDistinct()) { 015 sb.append("distinct "); 016 } 017 sb.append(request.getDbSql()); 018 int firstRow = request.getFirstRow(); 019 if (firstRow > 0) { 020 sb.append(" offset ").append(firstRow).append(" rows"); 021 } 022 int maxRows = request.getMaxRows(); 023 if (maxRows > 0) { 024 sb.append(" fetch next ").append(maxRows).append(" rows only"); 025 } 026 027 String sql = request.getDbPlatform().completeSql(sb.toString(), request.getOrmQuery()); 028 return new SqlLimitResponse(sql); 029 } 030}