fix groupBy ordering casing bug

This commit is contained in:
Xavier Léauté 2014-10-14 09:22:19 -04:00
parent c18f156cd8
commit 5b194ee5fe
3 changed files with 46 additions and 4 deletions

View File

@ -158,7 +158,7 @@ public class ApproximateHistogramGroupByQueryTest
Arrays.<DimensionSpec>asList( Arrays.<DimensionSpec>asList(
new DefaultDimensionSpec( new DefaultDimensionSpec(
QueryRunnerTestHelper.providerDimension, QueryRunnerTestHelper.providerDimension,
"provider" "proViderAlias"
) )
) )
) )
@ -167,7 +167,7 @@ public class ApproximateHistogramGroupByQueryTest
new DefaultLimitSpec( new DefaultLimitSpec(
Lists.newArrayList( Lists.newArrayList(
new OrderByColumnSpec( new OrderByColumnSpec(
"provider", "proViderAlias",
OrderByColumnSpec.Direction.DESCENDING OrderByColumnSpec.Direction.DESCENDING
) )
), 1 ), 1
@ -189,7 +189,7 @@ public class ApproximateHistogramGroupByQueryTest
List<Row> expectedResults = Arrays.asList( List<Row> expectedResults = Arrays.asList(
GroupByQueryRunnerTestHelper.createExpectedRow( GroupByQueryRunnerTestHelper.createExpectedRow(
"1970-01-01T00:00:00.000Z", "1970-01-01T00:00:00.000Z",
"provider", "upfront", "provideralias", "upfront",
"rows", 186L, "rows", 186L,
"quantile", 880.9881f, "quantile", 880.9881f,
"apphisto", "apphisto",

View File

@ -173,7 +173,7 @@ public class DefaultLimitSpec implements LimitSpec
public String apply(Row input) public String apply(Row input)
{ {
// Multi-value dimensions have all been flattened at this point; // Multi-value dimensions have all been flattened at this point;
final List<String> dimList = input.getDimension(dimension); final List<String> dimList = input.getDimension(dimension.toLowerCase());
return dimList.isEmpty() ? null : dimList.get(0); return dimList.isEmpty() ? null : dimList.get(0);
} }
} }

View File

@ -733,6 +733,48 @@ public class GroupByQueryRunnerTest
); );
} }
@Test
public void testGroupByWithMixedCasingOrdering()
{
GroupByQuery query = new GroupByQuery.Builder()
.setDataSource(QueryRunnerTestHelper.dataSource)
.setGranularity(QueryRunnerTestHelper.allGran)
.setDimensions(
Arrays.<DimensionSpec>asList(
new DefaultDimensionSpec(
QueryRunnerTestHelper.providerDimension,
"ProviderAlias"
)
)
)
.setInterval(QueryRunnerTestHelper.fullOnInterval)
.setLimitSpec(
new DefaultLimitSpec(
Lists.newArrayList(
new OrderByColumnSpec(
"providerALIAS",
OrderByColumnSpec.Direction.DESCENDING
)
), 3
)
)
.setAggregatorSpecs(
Lists.<AggregatorFactory>newArrayList(
QueryRunnerTestHelper.rowsCount
)
)
.build();
List<Row> expectedResults = Arrays.asList(
GroupByQueryRunnerTestHelper.createExpectedRow("1970-01-01T00:00:00.000Z", "provideralias", "upfront", "rows", 186L),
GroupByQueryRunnerTestHelper.createExpectedRow("1970-01-01T00:00:00.000Z", "provideralias", "total_market", "rows", 186L),
GroupByQueryRunnerTestHelper.createExpectedRow("1970-01-01T00:00:00.000Z", "provideralias", "spot", "rows", 837L)
);
Iterable<Row> results = GroupByQueryRunnerTestHelper.runQuery(factory, runner, query);
TestHelper.assertExpectedObjects(expectedResults, results, "order-limit");
}
@Test @Test
public void testHavingSpec() public void testHavingSpec()
{ {