Program: 51344
Project: 51344
Buggy source:
/** 
 * Checks that in dialects that request it (e.g. LucidDB), distinct aggregates based on SQL expressions, e.g. <code>count(distinct "col1" + "col2"), count(distinct query)</code>, are loaded individually, and separately from the other aggregates.
 */
public void testLoadDistinctSqlMeasure(){
  final SqlQuery.Dialect dialect=getTestContext().getDialect();
switch (SqlPattern.Dialect.get(dialect)) {
case ORACLE:
    return;
}
String cube="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
cube=cube.replaceAll("String_Node_Str",dialect.getQuoteIdentifierString());
if (dialect.isOracle()) {
  cube=cube.replaceAll("String_Node_Str","String_Node_Str");
}
String query="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
TestContext testContext=TestContext.create(null,cube,null,null,null);
testContext.assertQueryReturns(query,fold("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"));
String loadCountDistinct_luciddb1="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
String loadCountDistinct_luciddb2="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
String loadCountDistinct_luciddb3="String_Node_Str" + "String_Node_Str" + "String_Node_Str";
String loadOtherAggs_luciddb="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
String loadCountDistinct_derby1="String_Node_Str";
String loadCountDistinct_derby2="String_Node_Str";
String loadCountDistinct_derby3="String_Node_Str";
String loadOtherAggs_derby="String_Node_Str";
String load_mysql="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
SqlPattern[] patterns={new SqlPattern(SqlPattern.Dialect.LUCIDDB,loadCountDistinct_luciddb1,loadCountDistinct_luciddb1),new SqlPattern(SqlPattern.Dialect.LUCIDDB,loadCountDistinct_luciddb2,loadCountDistinct_luciddb2),new SqlPattern(SqlPattern.Dialect.LUCIDDB,loadCountDistinct_luciddb3,loadCountDistinct_luciddb3),new SqlPattern(SqlPattern.Dialect.LUCIDDB,loadOtherAggs_luciddb,loadOtherAggs_luciddb),new SqlPattern(SqlPattern.Dialect.DERBY,loadCountDistinct_derby1,loadCountDistinct_derby1),new SqlPattern(SqlPattern.Dialect.DERBY,loadCountDistinct_derby2,loadCountDistinct_derby2),new SqlPattern(SqlPattern.Dialect.DERBY,loadCountDistinct_derby3,loadCountDistinct_derby3),new SqlPattern(SqlPattern.Dialect.DERBY,loadOtherAggs_derby,loadOtherAggs_derby),new SqlPattern(SqlPattern.Dialect.MYSQL,load_mysql,load_mysql)};
assertQuerySql(testContext,query,patterns);
}

Fixed version (ground truth):
/** 
 * Checks that in dialects that request it (e.g. LucidDB), distinct aggregates based on SQL expressions, e.g. <code>count(distinct "col1" + "col2"), count(distinct query)</code>, are loaded individually, and separately from the other aggregates.
 */
public void testLoadDistinctSqlMeasure(){
  final SqlQuery.Dialect dialect=getTestContext().getDialect();
switch (SqlPattern.Dialect.get(dialect)) {
case ORACLE:
    return;
}
String cube="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
cube=cube.replaceAll("String_Node_Str",dialect.getQuoteIdentifierString());
if (dialect.isOracle()) {
  cube=cube.replaceAll("String_Node_Str","String_Node_Str");
}
String query="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
TestContext testContext=TestContext.create(null,cube,null,null,null);
testContext.assertQueryReturns(query,fold("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"));
String loadCountDistinct_luciddb1="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
String loadCountDistinct_luciddb2="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
String loadOtherAggs_luciddb="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
String loadCountDistinct_derby1="String_Node_Str";
String loadCountDistinct_derby2="String_Node_Str";
String loadCountDistinct_derby3="String_Node_Str";
String loadOtherAggs_derby="String_Node_Str";
String load_mysql="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
SqlPattern[] patterns={new SqlPattern(SqlPattern.Dialect.LUCIDDB,loadCountDistinct_luciddb1,loadCountDistinct_luciddb1),new SqlPattern(SqlPattern.Dialect.LUCIDDB,loadCountDistinct_luciddb2,loadCountDistinct_luciddb2),new SqlPattern(SqlPattern.Dialect.LUCIDDB,loadOtherAggs_luciddb,loadOtherAggs_luciddb),new SqlPattern(SqlPattern.Dialect.DERBY,loadCountDistinct_derby1,loadCountDistinct_derby1),new SqlPattern(SqlPattern.Dialect.DERBY,loadCountDistinct_derby2,loadCountDistinct_derby2),new SqlPattern(SqlPattern.Dialect.DERBY,loadCountDistinct_derby3,loadCountDistinct_derby3),new SqlPattern(SqlPattern.Dialect.DERBY,loadOtherAggs_derby,loadOtherAggs_derby),new SqlPattern(SqlPattern.Dialect.MYSQL,load_mysql,load_mysql)};
assertQuerySql(testContext,query,patterns);
}