Search in sources :

Example 1 with GroupByHashYieldResult

use of io.trino.operator.GroupByHashYieldAssertion.GroupByHashYieldResult in project trino by trinodb.

the class TestHashAggregationOperator method testMemoryReservationYield.

@Test(dataProvider = "dataType")
public void testMemoryReservationYield(Type type) {
    List<Page> input = createPagesWithDistinctHashKeys(type, 6_000, 600);
    OperatorFactory operatorFactory = new HashAggregationOperatorFactory(0, new PlanNodeId("test"), ImmutableList.of(type), ImmutableList.of(0), ImmutableList.of(), SINGLE, ImmutableList.of(COUNT.createAggregatorFactory(SINGLE, ImmutableList.of(0), OptionalInt.empty())), Optional.of(1), Optional.empty(), 1, Optional.of(DataSize.of(16, MEGABYTE)), joinCompiler, blockTypeOperators, Optional.empty());
    // get result with yield; pick a relatively small buffer for aggregator's memory usage
    GroupByHashYieldResult result;
    result = finishOperatorWithYieldingGroupByHash(input, type, operatorFactory, this::getHashCapacity, 1_400_000);
    assertGreaterThan(result.getYieldCount(), 5);
    assertGreaterThan(result.getMaxReservedBytes(), 20L << 20);
    int count = 0;
    for (Page page : result.getOutput()) {
        // value + hash + aggregation result
        assertEquals(page.getChannelCount(), 3);
        for (int i = 0; i < page.getPositionCount(); i++) {
            assertEquals(page.getBlock(2).getLong(i, 0), 1);
            count++;
        }
    }
    assertEquals(count, 6_000 * 600);
}
Also used : PlanNodeId(io.trino.sql.planner.plan.PlanNodeId) GroupByHashYieldResult(io.trino.operator.GroupByHashYieldAssertion.GroupByHashYieldResult) HashAggregationOperatorFactory(io.trino.operator.HashAggregationOperator.HashAggregationOperatorFactory) Page(io.trino.spi.Page) HashAggregationOperatorFactory(io.trino.operator.HashAggregationOperator.HashAggregationOperatorFactory) Test(org.testng.annotations.Test)

Aggregations

GroupByHashYieldResult (io.trino.operator.GroupByHashYieldAssertion.GroupByHashYieldResult)1 HashAggregationOperatorFactory (io.trino.operator.HashAggregationOperator.HashAggregationOperatorFactory)1 Page (io.trino.spi.Page)1 PlanNodeId (io.trino.sql.planner.plan.PlanNodeId)1 Test (org.testng.annotations.Test)1