001package com.avaje.ebean.config.dbplatform; 002 003/** 004 * Use top xx and start at xx to limit sql results. Based on 005 * MsSqlServer2005SqlLimiter and LimitOffsetSqlLimiter 006 */ 007public class SqlAnywhereLimiter implements SqlLimiter { 008 009 public SqlLimitResponse limit(SqlLimitRequest request) { 010 011 String dbSql = request.getDbSql(); 012 013 StringBuilder sb = new StringBuilder(60 + dbSql.length()); 014 015 int firstRow = request.getFirstRow(); 016 int maxRows = request.getMaxRows(); 017 018 /* 019 * SELECT TOP xx START AT xx ... FROM ... 020 */ 021 sb.append("select "); 022 if (request.isDistinct()) { 023 sb.append("distinct "); 024 } 025 if (maxRows > 0) { 026 sb.append("top ").append(maxRows).append(" "); 027 } 028 if (firstRow > 0) { 029 sb.append("start at ").append(firstRow + 1).append(" "); 030 } 031 sb.append(dbSql); 032 033 String sql = request.getDbPlatform().completeSql(sb.toString(), request.getOrmQuery()); 034 035 return new SqlLimitResponse(sql, false); 036 } 037 038}