public void testToStringForGroupingSetSqlWithEmptyGroup() {
if (!isGroupingSetsSupported()) {
return;
}
final Dialect dialect = getTestContext().getDialect();
for (boolean b : new boolean[]{false, true}) {
SqlQuery sqlQuery = new SqlQuery(getTestContext().getDialect(), b);
sqlQuery.addSelect("c1", null);
sqlQuery.addSelect("c2", null);
sqlQuery.addFromTable("s", "t1", "t1alias", null, null, true);
sqlQuery.addWhere("a=b");
sqlQuery.addGroupingFunction("g1");
sqlQuery.addGroupingFunction("g2");
ArrayList<String> groupingsetsList = new ArrayList<String>();
groupingsetsList.add("gs1");
groupingsetsList.add("gs2");
groupingsetsList.add("gs3");
sqlQuery.addGroupingSet(new ArrayList<String>());
sqlQuery.addGroupingSet(groupingsetsList);
String expected;
if (b) {
expected =
"select\n"
+ " c1 as \"c0\",\n"
+ " c2 as \"c1\",\n"
+ " grouping(g1) as \"g0\",\n"
+ " grouping(g2) as \"g1\"\n"
+ "from\n"
+ " \"s\".\"t1\" =as= \"t1alias\"\n"
+ "where\n"
+ " a=b\n"
+ "group by grouping sets (\n"
+ " (),\n"
+ " (gs1, gs2, gs3))";
} else {
expected =
"select c1 as \"c0\", c2 as \"c1\", grouping(g1) as \"g0\", "
+ "grouping(g2) as \"g1\" from \"s\".\"t1\" =as= \"t1alias\" where a=b "
+ "group by grouping sets ((), (gs1, gs2, gs3))";
}
assertEquals(
dialectize(dialect.getDatabaseProduct(), expected),
dialectize(
sqlQuery.getDialect().getDatabaseProduct(),
sqlQuery.toString()));
}
}