Source:
private List<String> selectColumnValuesMatchingFilterUsingVectorizedPostFiltering( final DimFilter filter, final String selectColumn ) { final Filter theFilter = makeFilter(filter); final Filter postFilteringFilter = new Filter() { @Override public <T> T getBitmapResult(BitmapIndexSelector selector, BitmapResultFactory<T> bitmapResultFactory) { throw new UnsupportedOperationException(); } @Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { return theFilter.makeMatcher(factory); } @Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return false; } @Override public VectorValueMatcher makeVectorMatcher(VectorColumnSelectorFactory factory) { return theFilter.makeVectorMatcher(factory); } @Override public boolean canVectorizeMatcher() { return theFilter.canVectorizeMatcher(); } @Override public Set<String> getRequiredColumns() { return null; } @Override public boolean shouldUseIndex(BitmapIndexSelector bitmapIndexSelector) { return false; } @Override public boolean supportsSelectivityEstimation(ColumnSelector columnSelector, BitmapIndexSelector indexSelector) { return false; } @Override public double estimateSelectivity(BitmapIndexSelector indexSelector) { return 1.0; } }; try (final VectorCursor cursor = makeVectorCursor(postFilteringFilter)) { final SingleValueDimensionVectorSelector selector = cursor .getColumnSelectorFactory() .makeSingleValueDimensionSelector(new DefaultDimensionSpec(selectColumn, selectColumn)); final List<String> values = new ArrayList<>(); while (!cursor.isDone()) { final int[] rowVector = selector.getRowVector(); for (int i = 0; i < cursor.getCurrentVectorSize(); i++) { values.add(selector.lookupName(rowVector[i])); } cursor.advance(); } return values; } }

Target:
private List<String> selectColumnValuesMatchingFilterUsingVectorizedPostFiltering( final DimFilter filter, final String selectColumn ) { final Filter theFilter = makeFilter(filter); final Filter postFilteringFilter = new Filter() { @Override public <T> T getBitmapResult(BitmapIndexSelector selector, BitmapResultFactory<T> bitmapResultFactory) { throw new UnsupportedOperationException(); } @Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { return theFilter.makeMatcher(factory); } @Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return false; } @Override public boolean shouldUseBitmapIndex(BitmapIndexSelector selector) { return false; } @Override public VectorValueMatcher makeVectorMatcher(VectorColumnSelectorFactory factory) { return theFilter.makeVectorMatcher(factory); } @Override public boolean canVectorizeMatcher() { return theFilter.canVectorizeMatcher(); } @Override public Set<String> getRequiredColumns() { return null; } @Override public boolean supportsSelectivityEstimation(ColumnSelector columnSelector, BitmapIndexSelector indexSelector) { return false; } @Override public double estimateSelectivity(BitmapIndexSelector indexSelector) { return 1.0; } }; try (final VectorCursor cursor = makeVectorCursor(postFilteringFilter)) { final SingleValueDimensionVectorSelector selector = cursor .getColumnSelectorFactory() .makeSingleValueDimensionSelector(new DefaultDimensionSpec(selectColumn, selectColumn)); final List<String> values = new ArrayList<>(); while (!cursor.isDone()) { final int[] rowVector = selector.getRowVector(); for (int i = 0; i < cursor.getCurrentVectorSize(); i++) { values.add(selector.lookupName(rowVector[i])); } cursor.advance(); } return values; } }