@Override public IndexableAdapter apply(QueryableIndex input) { return new QueryableIndexIndexableAdapter(input); } }
@Override public ColumnCapabilities getCapabilities(String column) { return baseAdapter.getCapabilities(column); }
@Override public List<String> getDimensionNames() { return baseAdapter.getDimensionNames(); }
final QueryableIndexIndexableAdapter adapter = new QueryableIndexIndexableAdapter(merged); final List<DebugRow> rowList = RowIteratorHelper.toList(adapter.getRows()); Assert.assertEquals(Arrays.asList("d3", "d1", "d2"), ImmutableList.copyOf(adapter.getDimensionNames())); Assert.assertEquals(3, rowList.size()); Assert.assertEquals(Collections.singletonList(3L), rowList.get(2).metricValues()); checkBitmapIndex(Collections.emptyList(), adapter.getBitmapIndex("d3", null)); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("d3", "30000")); checkBitmapIndex(Collections.singletonList(1), adapter.getBitmapIndex("d3", "40000")); checkBitmapIndex(Collections.singletonList(2), adapter.getBitmapIndex("d3", "50000")); checkBitmapIndex(Collections.emptyList(), adapter.getBitmapIndex("d1", null)); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("d1", "100")); checkBitmapIndex(Collections.singletonList(2), adapter.getBitmapIndex("d1", "200")); checkBitmapIndex(Collections.singletonList(1), adapter.getBitmapIndex("d1", "300")); checkBitmapIndex(Collections.emptyList(), adapter.getBitmapIndex("d2", null)); checkBitmapIndex(Collections.singletonList(1), adapter.getBitmapIndex("d2", "2000")); checkBitmapIndex(Collections.singletonList(2), adapter.getBitmapIndex("d2", "3000")); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("d2", "4000"));
assertDimCompression(index, indexSpec.getDimensionCompression()); final QueryableIndexIndexableAdapter adapter = new QueryableIndexIndexableAdapter(index); final List<DebugRow> rowList = RowIteratorHelper.toList(adapter.getRows()); Assert.assertEquals(Arrays.asList("3", null), rowList.get(1).dimensionValues()); checkBitmapIndex(Collections.emptyList(), adapter.getBitmapIndex("dim1", null)); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim1", "1")); checkBitmapIndex(Collections.singletonList(1), adapter.getBitmapIndex("dim1", "3")); checkBitmapIndex(Collections.singletonList(1), adapter.getBitmapIndex("dim2", null)); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim2", "2"));
@Override public TransformableRowIterator getRows() { QueryableIndexIndexableAdapter.RowIteratorImpl baseRowIterator = baseAdapter.getRows(); return new ForwardingRowIterator(baseRowIterator) { /** * This memoization is needed to conform to {@link RowIterator#getPointer()} specification. */ private boolean memoizedOffset = false; @Override public boolean moveToNext() { while (baseRowIterator.moveToNext()) { if (filter.test(baseRowIterator.getPointer())) { baseRowIterator.memoizeOffset(); memoizedOffset = true; return true; } } // Setting back to the last valid offset in this iterator, as required by RowIterator.getPointer() spec. if (memoizedOffset) { baseRowIterator.resetToMemoizedOffset(); } return false; } }; }
@Override public <T extends Comparable<? super T>> CloseableIndexed<T> getDimValueLookup(String dimension) { return baseAdapter.getDimValueLookup(dimension); }
@Override public Interval getDataInterval() { return baseAdapter.getDataInterval(); }
@Override public BitmapValues getBitmapValues(String dimension, int dictId) { return baseAdapter.getBitmapValues(dimension, dictId); }
@Override public Metadata getMetadata() { return baseAdapter.getMetadata(); } }
adapter = new QueryableIndexIndexableAdapter(index); rowList = RowIteratorHelper.toList(adapter.getRows()); Assert.assertEquals(useBitmapIndexes, adapter.getCapabilities("dim1").hasBitmapIndexes()); Assert.assertEquals(useBitmapIndexes, adapter.getCapabilities("dim2").hasBitmapIndexes()); checkBitmapIndex(Collections.emptyList(), adapter.getBitmapIndex("dim1", null)); checkBitmapIndex(Arrays.asList(0, 1), adapter.getBitmapIndex("dim1", "a")); checkBitmapIndex(Arrays.asList(0, 1), adapter.getBitmapIndex("dim1", "b")); checkBitmapIndex(Arrays.asList(0, 1), adapter.getBitmapIndex("dim1", "x")); checkBitmapIndex(Arrays.asList(0, 1), adapter.getBitmapIndex("dim2", "a")); checkBitmapIndex(Arrays.asList(0, 1), adapter.getBitmapIndex("dim2", "b")); checkBitmapIndex(Arrays.asList(0, 1), adapter.getBitmapIndex("dim2", "x")); adapter = new QueryableIndexIndexableAdapter(index); rowList = RowIteratorHelper.toList(adapter.getRows()); Assert.assertEquals(useBitmapIndexes, adapter.getCapabilities("dim1").hasBitmapIndexes()); Assert.assertEquals(useBitmapIndexes, adapter.getCapabilities("dim2").hasBitmapIndexes()); checkBitmapIndex(Collections.emptyList(), adapter.getBitmapIndex("dim1", null)); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim1", "a")); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim1", "b")); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim1", "x")); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim2", "a")); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim2", "b")); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dim2", "x"));
@Override public TransformableRowIterator getRows() { QueryableIndexIndexableAdapter.RowIteratorImpl baseRowIterator = baseAdapter.getRows(); return new ForwardingRowIterator(baseRowIterator) { /** * This memoization is needed to conform to {@link RowIterator#getPointer()} specification. */ private boolean memoizedOffset = false; @Override public boolean moveToNext() { while (baseRowIterator.moveToNext()) { if (filter.test(baseRowIterator.getPointer())) { baseRowIterator.memoizeOffset(); memoizedOffset = true; return true; } } // Setting back to the last valid offset in this iterator, as required by RowIterator.getPointer() spec. if (memoizedOffset) { baseRowIterator.resetToMemoizedOffset(); } return false; } }; }
@Override public <T extends Comparable<? super T>> CloseableIndexed<T> getDimValueLookup(String dimension) { return baseAdapter.getDimValueLookup(dimension); }
@Override public Interval getDataInterval() { return baseAdapter.getDataInterval(); }
@Override public BitmapValues getBitmapValues(String dimension, int dictId) { return baseAdapter.getBitmapValues(dimension, dictId); }
@Override public Metadata getMetadata() { return baseAdapter.getMetadata(); } }
final QueryableIndexIndexableAdapter adapter = new QueryableIndexIndexableAdapter(merged); final List<DebugRow> rowList = RowIteratorHelper.toList(adapter.getRows()); Assert.assertEquals(ImmutableList.of("dimA", "dimB"), ImmutableList.copyOf(adapter.getDimensionNames())); Assert.assertEquals(5, rowList.size()); Assert.assertTrue(adapter.getCapabilities("dimA").hasBitmapIndexes()); checkBitmapIndex(Arrays.asList(0, 1, 2), adapter.getBitmapIndex("dimA", null)); checkBitmapIndex(Collections.singletonList(3), adapter.getBitmapIndex("dimA", "1")); checkBitmapIndex(Collections.singletonList(4), adapter.getBitmapIndex("dimA", "2")); Assert.assertEquals(useBitmapIndexes, adapter.getCapabilities("dimB").hasBitmapIndexes()); checkBitmapIndex(Arrays.asList(3, 4), adapter.getBitmapIndex("dimB", null)); checkBitmapIndex(Collections.singletonList(0), adapter.getBitmapIndex("dimB", "1")); checkBitmapIndex(Collections.singletonList(1), adapter.getBitmapIndex("dimB", "2")); checkBitmapIndex(Collections.singletonList(2), adapter.getBitmapIndex("dimB", "3"));
public void validateTwoSegments(File dir1, File dir2) throws IOException { try (QueryableIndex queryableIndex1 = loadIndex(dir1)) { try (QueryableIndex queryableIndex2 = loadIndex(dir2)) { validateTwoSegments( new QueryableIndexIndexableAdapter(queryableIndex1), new QueryableIndexIndexableAdapter(queryableIndex2) ); } } }
@Override public List<String> getMetricNames() { final Set<String> columns = Sets.newLinkedHashSet(input.getColumnNames()); final HashSet<String> dimensions = Sets.newHashSet(getDimensionNames()); return ImmutableList.copyOf(Sets.difference(columns, dimensions)); }
@Override public ColumnCapabilities getCapabilities(String column) { return baseAdapter.getCapabilities(column); }