Object value = (thisObj instanceof InterMineObject ? ((InterMineObject) thisObj).getId() : thisObj); SqlGenerator.registerOffset(q, start + rowNo + 1, schema, db, value, bagConstraintTables);
Object value = (thisObj instanceof InterMineObject ? ((InterMineObject) thisObj).getId() : thisObj); SqlGenerator.registerOffset(q, start + rowNo + 1, schema, db, value, bagConstraintTables);
q.addToSelect(c1); assertEquals("SQL incorrect.", getRegisterOffset1(), SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, new HashMap())); SqlGenerator.registerOffset(q, 5, schema, db, new Integer(10), new HashMap()); assertEquals(getRegisterOffset1(), SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, new HashMap())); SqlGenerator.registerOffset(q, 11000, schema, db, new Integer(20), new HashMap()); assertEquals(getRegisterOffset1(), SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 20 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 11005, Integer.MAX_VALUE, schema, db, new HashMap())); SqlGenerator.registerOffset(q, 21000, schema, db, new Integer(30), new HashMap()); assertEquals(getRegisterOffset1(), SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 11000", SqlGenerator.generate(q, 11005, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 30 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 21005, Integer.MAX_VALUE, schema, db, new HashMap())); SqlGenerator.registerOffset(q, 21005, schema, db, new Integer(31), new HashMap()); assertEquals(getRegisterOffset1(), SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 11000", SqlGenerator.generate(q, 11005, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 30 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 21005, Integer.MAX_VALUE, schema, db, new HashMap())); SqlGenerator.registerOffset(q, 11002, schema, db, new Integer(29), new HashMap()); assertEquals(getRegisterOffset1(), SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 11000", SqlGenerator.generate(q, 11005, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 30 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 21005, Integer.MAX_VALUE, schema, db, new HashMap())); SqlGenerator.registerOffset(q, 101000, schema, db, new Integer(40), new HashMap()); assertEquals(getRegisterOffset1(), SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, new HashMap())); assertEquals(getRegisterOffset2() + "a1_.id > 10 ORDER BY a1_.id OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, new HashMap()));
@Test public void testLargeOffset() throws Exception { Query q = new Query(); QueryClass qc = new QueryClass(Address.class); q.addFrom(qc); q.addToSelect(qc); Query q2 = QueryCloner.cloneQuery(q); SingletonResults r = os.executeSingleton(q, 2, true, true, true); InterMineObject o = (InterMineObject) r.get(5); SqlGenerator.registerOffset(q2, 6, ((ObjectStoreInterMineImpl) os).getSchema(), ((ObjectStoreInterMineImpl) os).db, o.getId(), new HashMap()); SingletonResults r2 = os.executeSingleton(q2, 2, true, true, true); Query q3 = QueryCloner.cloneQuery(q); SqlGenerator.registerOffset(q3, 5, ((ObjectStoreInterMineImpl) os).getSchema(), ((ObjectStoreInterMineImpl) os).db, o.getId(), new HashMap()); SingletonResults r3 = new SingletonResults(q3, os, ObjectStore.SEQUENCE_IGNORE); r3.setBatchSize(2); Assert.assertTrue(r == r2); Assert.assertTrue(r != r3); Assert.assertTrue(r2 != r3); Assert.assertEquals(r, r2); Assert.assertTrue(!r.equals(r3)); }
@Test public void testPrecomputeWithNegatives() throws Exception { Types t1 = new Types(); t1.setLongObjType(new Long(-765187651234L)); t1.setIntObjType(new Integer(278652)); t1.setName("Fred"); storeDataWriter.store(t1); Query q = new Query(); QueryClass qc = new QueryClass(Types.class); QueryField into = new QueryField(qc, "intObjType"); QueryField longo = new QueryField(qc, "longObjType"); q.addFrom(qc); q.addToSelect(into); q.addToSelect(longo); q.addToSelect(qc); q.setDistinct(false); ((ObjectStoreInterMineImpl) os).precompute(q, "test"); Results r = os.execute(q, 1, true, true, true); SqlGenerator.registerOffset(q, 1, ((ObjectStoreInterMineImpl) os).getSchema(), ((ObjectStoreInterMineImpl) os).db, new Integer(278651), new HashMap()); ResultsRow row = (ResultsRow) r.get(1); InterMineObject o = (InterMineObject) row.get(2); Assert.assertEquals("Expected " + t1.toString() + " but got " + o.toString(), t1.getId(), o.getId()); try { r.get(2); Assert.fail("Expected size to be 2"); } catch (Exception e) { } Assert.assertEquals(2, r.size()); storeDataWriter.delete(t1); }
public void testRegisterOffset2() throws Exception { DatabaseSchema schema = getSchema(); Query q = new Query(); QueryClass qc = new QueryClass(Employee.class); q.addFrom(qc); QueryField f = new QueryField(qc, "name"); q.addToSelect(f); assertEquals("SELECT DISTINCT a1_.name AS a2_ FROM " + getRegisterOffset3() + " ORDER BY a1_.name", SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); SqlGenerator.registerOffset(q, 5, schema, db, "flibble", Collections.EMPTY_MAP); String expected = "SELECT DISTINCT a1_.name AS a2_ FROM " + getRegisterOffset3() + " " + getRegisterOffset4() + " (a1_.name > 'flibble' OR a1_.name IS NULL) ORDER BY a1_.name OFFSET 5"; assertEquals(expected, SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); q = new Query(); qc = new QueryClass(Employee.class); q.addFrom(qc); f = new QueryField(qc, "age"); q.addToSelect(f); assertEquals("SELECT DISTINCT a1_.age AS a2_ FROM " + getRegisterOffset3() + " ORDER BY a1_.age", SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); SqlGenerator.registerOffset(q, 5, schema, db, new Integer(34), Collections.EMPTY_MAP); assertEquals("SELECT DISTINCT a1_.age AS a2_ FROM " + getRegisterOffset3() + " " + getRegisterOffset4() + " a1_.age > 34 ORDER BY a1_.age OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); }
public void testRegisterOffset4() throws Exception { DatabaseSchema schema = getSchema(); Query q = new Query(); QueryClass qc = new QueryClass(Employee.class); q.addFrom(qc); QueryField f = new QueryField(qc, "name"); q.addToSelect(f); q.addToOrderBy(new OrderDescending(f)); assertEquals("SELECT DISTINCT a1_.name AS a2_ FROM " + getRegisterOffset3() + " ORDER BY a1_.name DESC", SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); SqlGenerator.registerOffset(q, 5, schema, db, "flibble", Collections.EMPTY_MAP); assertEquals("SELECT DISTINCT a1_.name AS a2_ FROM " + getRegisterOffset3() + " " + getRegisterOffset4() + " a1_.name < 'flibble' ORDER BY a1_.name DESC OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); }
@Test public void testLargeOffset2() throws Exception { Employee nullEmployee = new Employee(); nullEmployee.setAge(26); nullEmployee.setName(null); try { storeDataWriter.store(nullEmployee); Query q = new Query(); QueryClass qc = new QueryClass(Employee.class); q.addFrom(qc); q.addToSelect(qc); q.addToOrderBy(new QueryField(qc, "name")); Query q2 = QueryCloner.cloneQuery(q); SingletonResults r = os.executeSingleton(q, 2, true, true, true); Employee o = (Employee) r.get(2); SqlGenerator.registerOffset(q2, 3, ((ObjectStoreInterMineImpl) os).getSchema(), ((ObjectStoreInterMineImpl) os).db, o.getName(), new HashMap()); SingletonResults r2 = os.executeSingleton(q2, 2, true, true, true); Query q3 = QueryCloner.cloneQuery(q); SqlGenerator.registerOffset(q3, 2, ((ObjectStoreInterMineImpl) os).getSchema(), ((ObjectStoreInterMineImpl) os).db, o.getName(), new HashMap()); SingletonResults r3 = new SingletonResults(q3, os, ObjectStore.SEQUENCE_IGNORE); r3.setBatchSize(2); Assert.assertTrue(r == r2); Assert.assertTrue(r != r3); Assert.assertTrue(r2 != r3); Assert.assertEquals(r, r2); Assert.assertTrue(!r.equals(r3)); } finally { storeDataWriter.delete(nullEmployee); } }
SqlGenerator.registerOffset(q, 1, ((ObjectStoreInterMineImpl) os).getSchema(), ((ObjectStoreInterMineImpl) os).db, new Integer(100000), new HashMap());
public void testRegisterOffset3() throws Exception { DatabaseSchema schema = getSchema(); Query q = new Query(); QueryClass qc = new QueryClass(Employee.class); q.addFrom(qc); QueryField f = new QueryField(qc, "name"); q.addToSelect(f); SimpleConstraint sc = new SimpleConstraint(f, ConstraintOp.IS_NOT_NULL); q.setConstraint(sc); assertEquals("SELECT DISTINCT a1_.name AS a2_ FROM " + getRegisterOffset3() + " " + getRegisterOffset4() + " a1_.name IS NOT NULL ORDER BY a1_.name", SqlGenerator.generate(q, 0, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); SqlGenerator.registerOffset(q, 5, schema, db, "flibble", Collections.EMPTY_MAP); assertEquals("SELECT DISTINCT a1_.name AS a2_ FROM " + getRegisterOffset3() + " " + getRegisterOffset4() + " a1_.name IS NOT NULL AND a1_.name > 'flibble' ORDER BY a1_.name OFFSET 5", SqlGenerator.generate(q, 10, Integer.MAX_VALUE, schema, db, Collections.EMPTY_MAP)); }