diff --git a/ebean-test/src/test/java/io/ebean/xtest/BaseTestCase.java b/ebean-test/src/test/java/io/ebean/xtest/BaseTestCase.java index 2c1aeb245..cc4d04326 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/BaseTestCase.java +++ b/ebean-test/src/test/java/io/ebean/xtest/BaseTestCase.java @@ -171,6 +171,14 @@ public abstract class BaseTestCase { return spiEbeanServer().databasePlatform().isCaseSensitiveCollation(); } + public boolean isLimitOffset() { + return isH2() || isPostgresCompatible() || isMySql() || isMariaDB(); + } + + public boolean isAnsiSqlLimit() { + return isOracle() || isDb2(); + } + /** * MS SQL Server does not allow setting explicit values on identity columns * so tests that do this need to be skipped for SQL Server. diff --git a/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java b/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java index bbdb15b4f..4a941299f 100644 --- a/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java +++ b/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java @@ -798,12 +798,13 @@ class TestQuerySingleAttribute extends BaseTestCase { .setMaxRows(2); List statusList = query.findSingleAttributeList(); - assertSql(query) - .contains("select t1.status from o_customer t0 " - + "left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null limit 2") - .doesNotContain("order by"); - // Results in java.lang.AssertionError: selectSql was null - // at io.ebeaninternal.server.query.SqlTree.getSelectSql(SqlTree.java:99) + if (isSqlServer()) { + assertThat(sqlOf(query)).isEqualTo("select top 2 t1.status from o_customer t0 left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null"); + } else if (isLimitOffset()) { + assertThat(sqlOf(query)).isEqualTo("select t1.status from o_customer t0 left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null limit 2"); + } else if (isAnsiSqlLimit()) { + assertThat(sqlOf(query)).isEqualTo("select t1.status from o_customer t0 left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null fetch next 100 rows only"); + } assertThat(statusList).hasSize(2); }