use of com.linkedin.pinot.core.operator.filter.BaseFilterOperator in project pinot by linkedin.
the class OrOperatorTest method testIntersectionForThreeLists.
@Test
public void testIntersectionForThreeLists() {
int[] list1 = new int[] { 2, 3, 6, 10, 15, 16, 28 };
int[] list2 = new int[] { 3, 6, 8, 20, 28 };
int[] list3 = new int[] { 1, 2, 3, 6, 30 };
List<BaseFilterOperator> operators = new ArrayList<>();
operators.add(makeFilterOperator(list1));
operators.add(makeFilterOperator(list2));
operators.add(makeFilterOperator(list3));
final OrOperator orOperator = new OrOperator(operators);
orOperator.open();
Block block;
TreeSet<Integer> set = new TreeSet<Integer>();
set.addAll(Lists.newArrayList(ArrayUtils.toObject(list1)));
set.addAll(Lists.newArrayList(ArrayUtils.toObject(list2)));
set.addAll(Lists.newArrayList(ArrayUtils.toObject(list3)));
Iterator<Integer> expectedIterator = set.iterator();
while ((block = orOperator.nextBlock()) != null) {
final BlockDocIdSet blockDocIdSet = block.getBlockDocIdSet();
final BlockDocIdIterator iterator = blockDocIdSet.iterator();
int docId;
while ((docId = iterator.next()) != Constants.EOF) {
Assert.assertEquals(expectedIterator.next().intValue(), docId);
}
}
orOperator.close();
}
use of com.linkedin.pinot.core.operator.filter.BaseFilterOperator in project pinot by linkedin.
the class RawIndexBenchmark method profileLookups.
/**
* Profiles the lookup time for a given column, for the given docIds.
*
* @param segment Segment to profile
* @param column Column to profile
* @param docIds DocIds to lookup on the column
* @return Time take in millis for the lookups
*/
private long profileLookups(IndexSegment segment, String column, int[] docIds) {
BaseFilterOperator filterOperator = new TestFilterOperator(docIds);
BReusableFilteredDocIdSetOperator docIdSetOperator = new BReusableFilteredDocIdSetOperator(filterOperator, docIds.length, DocIdSetPlanNode.MAX_DOC_PER_CALL);
ProjectionBlock projectionBlock;
MProjectionOperator projectionOperator = new MProjectionOperator(buildDataSourceMap(segment), docIdSetOperator);
long start = System.currentTimeMillis();
while ((projectionBlock = (ProjectionBlock) projectionOperator.nextBlock()) != null) {
ProjectionBlockValSet blockValueSet = (ProjectionBlockValSet) projectionBlock.getBlockValueSet(column);
blockValueSet.getDoubleValuesSV();
}
return (System.currentTimeMillis() - start);
}
Aggregations