Program: 50994
Project: 50994
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 Dialect dialect=getTestContext().getDialect();
switch (dialect.getDatabaseProduct()) {
case ORACLE:
case ACCESS:
case TERADATA:
case NEOVIEW:
case NETEZZA:
    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.getDatabaseProduct() == Dialect.DatabaseProduct.ORACLE) {
  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.instance().create(null,cube,null,null,null,null);
String desiredResult="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";
testContext.assertQueryReturns(query,desiredResult);
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(Dialect.DatabaseProduct.LUCIDDB,loadCountDistinct_luciddb1,loadCountDistinct_luciddb1),new SqlPattern(Dialect.DatabaseProduct.LUCIDDB,loadCountDistinct_luciddb2,loadCountDistinct_luciddb2),new SqlPattern(Dialect.DatabaseProduct.LUCIDDB,loadOtherAggs_luciddb,loadOtherAggs_luciddb),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadCountDistinct_derby1,loadCountDistinct_derby1),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadCountDistinct_derby2,loadCountDistinct_derby2),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadCountDistinct_derby3,loadCountDistinct_derby3),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadOtherAggs_derby,loadOtherAggs_derby),new SqlPattern(Dialect.DatabaseProduct.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 Dialect dialect=getTestContext().getDialect();
switch (dialect.getDatabaseProduct()) {
case ORACLE:
case ACCESS:
case TERADATA:
case NEOVIEW:
case NETEZZA:
case GREENPLUM:
    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.getDatabaseProduct() == Dialect.DatabaseProduct.ORACLE) {
  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.instance().create(null,cube,null,null,null,null);
String desiredResult="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";
testContext.assertQueryReturns(query,desiredResult);
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(Dialect.DatabaseProduct.LUCIDDB,loadCountDistinct_luciddb1,loadCountDistinct_luciddb1),new SqlPattern(Dialect.DatabaseProduct.LUCIDDB,loadCountDistinct_luciddb2,loadCountDistinct_luciddb2),new SqlPattern(Dialect.DatabaseProduct.LUCIDDB,loadOtherAggs_luciddb,loadOtherAggs_luciddb),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadCountDistinct_derby1,loadCountDistinct_derby1),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadCountDistinct_derby2,loadCountDistinct_derby2),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadCountDistinct_derby3,loadCountDistinct_derby3),new SqlPattern(Dialect.DatabaseProduct.DERBY,loadOtherAggs_derby,loadOtherAggs_derby),new SqlPattern(Dialect.DatabaseProduct.MYSQL,load_mysql,load_mysql)};
assertQuerySql(testContext,query,patterns);
}