assertEquals("FROM not found in query: SELECT foobar", e.getMessage());
}
}
public void testFullQuery() throws Exception {
Query q = MetaModelHelper.parseQuery(dc,
"SELECT foo, COUNT(* ), MAX( baz ) FROM sch.tbl WHERE bar = 'baz' AND foo = bar AND baz > 5 "
+ "GROUP BY foo HAVING COUNT(*) > 2 ORDER BY foo LIMIT 20 OFFSET 10");
assertEquals(
"SELECT tbl.foo, COUNT(*), MAX(tbl.baz) FROM sch.tbl WHERE tbl.bar = 'baz' AND tbl.foo = tbl.bar AND tbl.baz > 5 "
+ "GROUP BY tbl.foo HAVING COUNT(*) > 2 ORDER BY tbl.foo ASC", q.toSql());
assertEquals(20, q.getMaxRows().intValue());
assertEquals(11, q.getFirstRow().intValue());
// SELECT ...
// tbl.foo
assertNotNull("SelectItem 1 should be a column", q.getSelectClause().getItem(0).getColumn());
// COUNT(*)
assertNotNull("SelectItem 2 should be a Function", q.getSelectClause().getItem(1).getFunction());
assertNotNull("SelectItem 2 should be a Function of '*'", q.getSelectClause().getItem(1).getExpression());
// MAX(tbl.baz)
assertNotNull("SelectItem 3 should be a Function", q.getSelectClause().getItem(2).getFunction());
assertNotNull("SelectItem 4 should be a Function of a column", q.getSelectClause().getItem(2).getColumn());
// FROM tbl.foo
assertNotNull(q.getFromClause().getItem(0).getTable());
// GROUP BY tbl.foo
assertNotNull(q.getGroupByClause().getItem(0).getSelectItem().getColumn());
// HAVING COUNT(*) > 2
FilterItem havingItem = q.getHavingClause().getItem(0);
assertNull(havingItem.getExpression());
assertNotNull(havingItem.getSelectItem().getFunction());
assertEquals("*", havingItem.getSelectItem().getExpression());
// ORDER BY tbl.foo ASC
OrderByItem orderByItem = q.getOrderByClause().getItem(0);
assertNull(orderByItem.getSelectItem().getExpression());
assertNotNull(orderByItem.getSelectItem().getColumn());
assertEquals(Direction.ASC, orderByItem.getDirection());
}