#374 - MsSqlServer - adjust tests (due to jdbc batch support etc) add in support for unique index handling

This commit is contained in:
Robin Bygrave
2015-08-06 21:49:04 +12:00
parent 3a9668fe6c
commit 1dd0841f00
31 changed files with 586 additions and 360 deletions
@@ -15,142 +15,139 @@ import com.avaje.tests.model.basic.ResetBasicData;
public class TestLimitQuery extends BaseTestCase {
@Test
public void testNothing() {
}
@Test
public void testLimitWithMany() {
rob();
rob();
}
@Test
public void testLimitWithMany() {
rob();
rob();
}
@Test
public void testMaxRowsZeroWithFirstRow() {
@Test
public void testMaxRowsZeroWithFirstRow() {
ResetBasicData.reset();
ResetBasicData.reset();
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
SpiEbeanServer server = (SpiEbeanServer) Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.setMaxRows(0)
.setFirstRow(3);
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.setMaxRows(0)
.setFirstRow(3)
.order().asc("orderDate");
query.findList();
query.findList();
String sql = query.getGeneratedSql();
boolean hasLimit = sql.contains("limit 0");
boolean hasOffset = sql.contains("offset 3");
String sql = query.getGeneratedSql();
boolean hasLimit = sql.contains("limit 0");
boolean hasOffset = sql.contains("offset 3");
if (h2Db) {
Assert.assertTrue(hasLimit);
Assert.assertTrue(hasOffset);
}
}
if (h2Db) {
Assert.assertTrue(hasLimit);
Assert.assertTrue(hasOffset);
}
}
@Test
public void testMaxRowsWithFirstRowZero() {
ResetBasicData.reset();
@Test
public void testMaxRowsWithFirstRowZero() {
ResetBasicData.reset();
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
SpiEbeanServer server = (SpiEbeanServer) Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.setMaxRows(3)
.setFirstRow(0);
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.setMaxRows(3)
.setFirstRow(0);
query.findList();
query.findList();
String sql = query.getGeneratedSql();
boolean hasLimit = sql.contains("limit 3");
boolean hasOffset = sql.contains("offset");
String sql = query.getGeneratedSql();
boolean hasLimit = sql.contains("limit 3");
boolean hasOffset = sql.contains("offset");
if (h2Db) {
Assert.assertTrue(sql, hasLimit);
Assert.assertFalse(sql, hasOffset);
}
}
if (h2Db) {
Assert.assertTrue(sql, hasLimit);
Assert.assertFalse(sql, hasOffset);
}
}
@Test
public void testDefaults() {
ResetBasicData.reset();
@Test
public void testDefaults() {
ResetBasicData.reset();
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
SpiEbeanServer server = (SpiEbeanServer) Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.query();
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.query();
query.findList();
query.findList();
String sql = query.getGeneratedSql();
boolean hasLimit = sql.contains("limit");
boolean hasOffset = sql.contains("offset");
String sql = query.getGeneratedSql();
boolean hasLimit = sql.contains("limit");
boolean hasOffset = sql.contains("offset");
if (h2Db) {
Assert.assertFalse(hasLimit);
Assert.assertFalse(hasOffset);
}
}
if (h2Db) {
Assert.assertFalse(hasLimit);
Assert.assertFalse(hasOffset);
}
}
private void rob() {
ResetBasicData.reset();
SpiEbeanServer server = (SpiEbeanServer)Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.setMaxRows(10);
//.findList();
List<Order> list = query.findList();
Assert.assertTrue("sz > 0", list.size() > 0);
private void rob() {
ResetBasicData.reset();
String sql = query.getGeneratedSql();
boolean hasDetailsJoin = sql.contains("join o_order_detail");
boolean hasLimit = sql.contains("limit 10");
boolean hasSelectedDetails = sql.contains("od.id,");
boolean hasDistinct = sql.contains("select distinct");
Assert.assertTrue(hasDetailsJoin);
Assert.assertFalse(hasSelectedDetails);
Assert.assertTrue(hasDistinct);
if (h2Db){
Assert.assertTrue(hasLimit);
}
query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.setMaxRows(10);
query.findList();
sql = query.getGeneratedSql();
hasDetailsJoin = sql.contains("left outer join o_order_detail");
hasLimit = sql.contains("limit 10");
hasSelectedDetails = sql.contains("od.id");
hasDistinct = sql.contains("select distinct");
SpiEbeanServer server = (SpiEbeanServer) Ebean.getServer(null);
boolean h2Db = "h2".equals(server.getDatabasePlatform().getName());
Assert.assertFalse("no join with maxRows",hasDetailsJoin);
Assert.assertFalse(hasSelectedDetails);
Assert.assertFalse(hasDistinct);
if (h2Db){
Assert.assertTrue(hasLimit);
}
}
Query<Order> query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.where().gt("details.id", 0)
.setMaxRows(10);
//.findList();
List<Order> list = query.findList();
Assert.assertTrue("sz > 0", list.size() > 0);
String sql = query.getGeneratedSql();
boolean hasDetailsJoin = sql.contains("join o_order_detail");
boolean hasLimit = sql.contains("limit 10");
boolean hasSelectedDetails = sql.contains("od.id,");
boolean hasDistinct = sql.contains("select distinct");
Assert.assertTrue(hasDetailsJoin);
Assert.assertFalse(hasSelectedDetails);
Assert.assertTrue(hasDistinct);
if (h2Db) {
Assert.assertTrue(hasLimit);
}
query = Ebean.find(Order.class)
.setAutofetch(false)
.fetch("details")
.setMaxRows(10);
query.findList();
sql = query.getGeneratedSql();
hasDetailsJoin = sql.contains("left outer join o_order_detail");
hasLimit = sql.contains("limit 10");
hasSelectedDetails = sql.contains("od.id");
hasDistinct = sql.contains("select distinct");
Assert.assertFalse("no join with maxRows", hasDetailsJoin);
Assert.assertFalse(hasSelectedDetails);
Assert.assertFalse(hasDistinct);
if (h2Db) {
Assert.assertTrue(hasLimit);
}
}
}