@Override public void addInput(Page page) { checkState(!finishing, "Operator is already finishing"); checkState(unfinishedWork == null, "Cannot add input with the operator when unfinished work is not empty"); checkState(outputIterator == null, "Cannot add input with the operator when flushing"); requireNonNull(page, "page is null"); unfinishedWork = groupedTopNBuilder.processPage(page); if (unfinishedWork.process()) { unfinishedWork = null; } updateMemoryReservation(); }
public Work<?> processPage(Page page) { return new TransformWork<>( groupByHash.getGroupIds(page), groupIds -> { processPage(page, groupIds); return null; }); }
@Override public void addInput(Page page) { checkState(!finishing, "Operator is already finishing"); boolean done = topNBuilder.processPage(requireNonNull(page, "page is null")).process(); // there is no grouping so work will always be done verify(done); updateMemoryReservation(); }
@Benchmark public List<Page> topN(BenchmarkData data) { data.getTopNBuilder().processPage(data.getPage()).process(); return ImmutableList.copyOf(data.getTopNBuilder().buildResult()); }
assertTrue(groupedTopNBuilder.processPage(input.get(i)).process()); assertBuilderSize(groupByHash, types, Collections.nCopies(i + 1, rowCount), Collections.nCopies(rowCount, i + 1), groupedTopNBuilder.getEstimatedSizeInBytes());
assertBuilderSize(groupByHash, types, ImmutableList.of(), ImmutableList.of(), groupedTopNBuilder.getEstimatedSizeInBytes()); Work<?> work = groupedTopNBuilder.processPage(input); assertFalse(work.process()); assertFalse(work.process());
assertTrue(groupedTopNBuilder.processPage(input.get(0)).process()); assertEquals(groupedTopNBuilder.getBufferedPages().size(), 1); Page firstCompactPage = groupedTopNBuilder.getBufferedPages().get(0); assertTrue(groupedTopNBuilder.processPage(input.get(1)).process()); assertEquals(groupedTopNBuilder.getBufferedPages().size(), 1); assertTrue(groupedTopNBuilder.processPage(input.get(2)).process()); List<Page> bufferedPages = groupedTopNBuilder.getBufferedPages(); assertEquals(bufferedPages.size(), 2); assertTrue(groupedTopNBuilder.processPage(input.get(3)).process()); bufferedPages = groupedTopNBuilder.getBufferedPages(); assertEquals(bufferedPages.size(), 2); assertTrue(groupedTopNBuilder.processPage(input.get(4)).process()); bufferedPages = groupedTopNBuilder.getBufferedPages(); assertEquals(bufferedPages.size(), 2);
assertTrue(groupedTopNBuilder.processPage(input.get(0)).process()); assertBuilderSize(groupByHash, types, ImmutableList.of(4), ImmutableList.of(1, 1, 2), groupedTopNBuilder.getEstimatedSizeInBytes()); assertTrue(groupedTopNBuilder.processPage(input.get(1)).process()); assertBuilderSize(groupByHash, types, ImmutableList.of(4, 1), ImmutableList.of(2, 1, 2), groupedTopNBuilder.getEstimatedSizeInBytes()); assertTrue(groupedTopNBuilder.processPage(input.get(2)).process()); assertBuilderSize(groupByHash, types, ImmutableList.of(4, 1, 2), ImmutableList.of(2, 2, 2, 1), groupedTopNBuilder.getEstimatedSizeInBytes()); assertTrue(groupedTopNBuilder.processPage(input.get(3)).process()); assertBuilderSize(groupByHash, types, ImmutableList.of(4, 1, 2, 0), ImmutableList.of(2, 2, 2, 1), groupedTopNBuilder.getEstimatedSizeInBytes());
assertTrue(groupedTopNBuilder.processPage(input.get(0)).process()); assertBuilderSize(new NoChannelGroupByHash(), types, ImmutableList.of(4), ImmutableList.of(4), groupedTopNBuilder.getEstimatedSizeInBytes()); assertTrue(groupedTopNBuilder.processPage(input.get(1)).process()); assertBuilderSize(new NoChannelGroupByHash(), types, ImmutableList.of(4, 1), ImmutableList.of(5), groupedTopNBuilder.getEstimatedSizeInBytes()); assertTrue(groupedTopNBuilder.processPage(input.get(2)).process()); assertBuilderSize(new NoChannelGroupByHash(), types, ImmutableList.of(4, 1, 1), ImmutableList.of(5), groupedTopNBuilder.getEstimatedSizeInBytes()); assertTrue(groupedTopNBuilder.processPage(input.get(3)).process()); assertBuilderSize(new NoChannelGroupByHash(), types, ImmutableList.of(4, 1, 1), ImmutableList.of(5), groupedTopNBuilder.getEstimatedSizeInBytes());