private long estimateCountPartial(List<Object> values, int field)
{
int size = Math.min(values.size(), Math.max(values.size() / 2, 1));
Block first = aggregatePartial(values.subList(0, size), field);
Block second = aggregatePartial(values.subList(size, values.size()), field);
Aggregator aggregator = createAggregator(aggregation(getAggregationFunction(), new Input(0, field)), AggregationNode.Step.FINAL);
BlockCursor cursor = first.cursor();
while (cursor.advanceNextPosition()) {
aggregator.addValue(cursor);
}
cursor = second.cursor();
while (cursor.advanceNextPosition()) {
aggregator.addValue(cursor);
}
return (long) BlockAssertions.toValues(aggregator.getResult()).get(0).get(0);