Index: cpa/src/main/java/org/castor/cpa/persistence/sql/driver/SapDbQueryExpression.java =================================================================== --- cpa/src/main/java/org/castor/cpa/persistence/sql/driver/SapDbQueryExpression.java (revision 8376) +++ cpa/src/main/java/org/castor/cpa/persistence/sql/driver/SapDbQueryExpression.java (working copy) @@ -165,6 +165,21 @@ if (_order != null) { sql.append(JDBCSyntax.ORDER_BY).append(_order); } + + if (_limit != null) { + if (_distinct) { + sql.insert(0, "SELECT * FROM ("); + sql.append(")"); + } + + sql.append(JDBCSyntax.LIMIT); + + if (_offset != null) { + sql.append(_offset).append(", "); + } + + sql.append(_limit); + } // Use WITH LOCK to lock selected tables. if (lock) { @@ -172,6 +187,24 @@ } return sql.toString(); } + + /** + * Indicates that SapDB supports an OQL LIMIT clause. + * + * @return true to indicate that SapDB supports an OQL LIMIT clause. + */ + public boolean isLimitClauseSupported() { + return true; + } + + /** + * Indicates that SapDB supports an OQL OFFSET clause for versions >= 7.6.0. + * + * @return true to indicate that SapDB supports an OQL OFFSET clause. + */ + public boolean isOffsetClauseSupported() { + return true; + } } Index: cpactf/src/test/java/org/castor/cpa/test/test32/TestLimitClause.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test32/TestLimitClause.java (revision 8436) +++ cpactf/src/test/java/org/castor/cpa/test/test32/TestLimitClause.java (working copy) @@ -46,7 +46,8 @@ return (engine == DatabaseEngineType.HSQL) || (engine == DatabaseEngineType.MYSQL) || (engine == DatabaseEngineType.ORACLE) - || (engine == DatabaseEngineType.POSTGRESQL); + || (engine == DatabaseEngineType.POSTGRESQL) + || (engine == DatabaseEngineType.SAPDB); } public boolean exclude(final DatabaseEngineType engine) { Index: cpactf/src/test/java/org/castor/cpa/test/test32/TestLimitWithOffsetClause.java =================================================================== --- cpactf/src/test/java/org/castor/cpa/test/test32/TestLimitWithOffsetClause.java (revision 8436) +++ cpactf/src/test/java/org/castor/cpa/test/test32/TestLimitWithOffsetClause.java (working copy) @@ -48,7 +48,8 @@ return (engine == DatabaseEngineType.HSQL) || (engine == DatabaseEngineType.MYSQL) || (engine == DatabaseEngineType.ORACLE) - || (engine == DatabaseEngineType.POSTGRESQL); + || (engine == DatabaseEngineType.POSTGRESQL) + || (engine == DatabaseEngineType.SAPDB); } public boolean exclude(final DatabaseEngineType engine) { Index: cpactf/src/test/resources/CPACTF-Matrix.ods =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: src/doc/release-notes.xml =================================================================== --- src/doc/release-notes.xml (revision 8463) +++ src/doc/release-notes.xml (working copy) @@ -91,6 +91,26 @@ ]]> + + + Add support for LIMIT and OFFSET clause on sapdb/maxdb. + + + Clovis Wichoski + clovis.wichoski@gmail.com + + + Ralf Joachim + ralf.joachim@syscon.eu + + + Clovis Wichoski + clovis.wichoski@gmail.com + + Enh. + JDO + 20091129 + Separate building of SQL statements for queries from SQLStatementLoad.