public static ImmutableBitmap allFalse(final BitmapIndexSelector selector) { return selector.getBitmapFactory().makeEmptyImmutableBitmap(); }
public static ImmutableBitmap allTrue(final BitmapIndexSelector selector) { return selector.getBitmapFactory() .complement(selector.getBitmapFactory().makeEmptyImmutableBitmap(), selector.getNumRows()); }
/** * Get a bitmap index, indicating rows that match this filter. Do not call this method unless * {@link #supportsBitmapIndex(BitmapIndexSelector)} returns true. Behavior in the case that * {@link #supportsBitmapIndex(BitmapIndexSelector)} returns false is undefined. * * This method is OK to be called, but generally should not be overridden, override {@link #getBitmapResult} instead. * * @param selector Object used to retrieve bitmap indexes * * @return A bitmap indicating rows that match this filter. * * @see Filter#estimateSelectivity(BitmapIndexSelector) */ default ImmutableBitmap getBitmapIndex(BitmapIndexSelector selector) { return getBitmapResult(selector, new DefaultBitmapResultFactory(selector.getBitmapFactory())); }
@Override public ValueMatcher makeMatcher( BitmapIndexSelector selector, ColumnSelectorFactory columnSelectorFactory, RowOffsetMatcherFactory rowOffsetMatcherFactory ) { final List<ValueMatcher> matchers = new ArrayList<>(); final List<ImmutableBitmap> bitmaps = new ArrayList<>(); for (Filter filter : filters) { if (filter.supportsBitmapIndex(selector)) { bitmaps.add(filter.getBitmapIndex(selector)); } else { ValueMatcher matcher = filter.makeMatcher(columnSelectorFactory); matchers.add(matcher); } } if (bitmaps.size() > 0) { ImmutableBitmap combinedBitmap = selector.getBitmapFactory().intersection(bitmaps); ValueMatcher offsetMatcher = rowOffsetMatcherFactory.makeRowOffsetMatcher(combinedBitmap); matchers.add(0, offsetMatcher); } return makeMatcher(matchers.toArray(EMPTY_VALUE_MATCHER_ARRAY)); }
@Override public ValueMatcher makeMatcher( BitmapIndexSelector selector, ColumnSelectorFactory columnSelectorFactory, RowOffsetMatcherFactory rowOffsetMatcherFactory ) { final List<ValueMatcher> matchers = new ArrayList<>(); final List<ImmutableBitmap> bitmaps = new ArrayList<>(); for (Filter filter : filters) { if (filter.supportsBitmapIndex(selector)) { bitmaps.add(filter.getBitmapIndex(selector)); } else { ValueMatcher matcher = filter.makeMatcher(columnSelectorFactory); matchers.add(matcher); } } if (bitmaps.size() > 0) { ImmutableBitmap combinedBitmap = selector.getBitmapFactory().union(bitmaps); ValueMatcher offsetMatcher = rowOffsetMatcherFactory.makeRowOffsetMatcher(combinedBitmap); matchers.add(0, offsetMatcher); } return makeMatcher(matchers.toArray(AndFilter.EMPTY_VALUE_MATCHER_ARRAY)); }
public static ImmutableBitmap allFalse(final BitmapIndexSelector selector) { return selector.getBitmapFactory().makeEmptyImmutableBitmap(); }
public static ImmutableBitmap allTrue(final BitmapIndexSelector selector) { return selector.getBitmapFactory() .complement(selector.getBitmapFactory().makeEmptyImmutableBitmap(), selector.getNumRows()); }
/** * Get a bitmap index, indicating rows that match this filter. Do not call this method unless * {@link #supportsBitmapIndex(BitmapIndexSelector)} returns true. Behavior in the case that * {@link #supportsBitmapIndex(BitmapIndexSelector)} returns false is undefined. * * This method is OK to be called, but generally should not be overridden, override {@link #getBitmapResult} instead. * * @param selector Object used to retrieve bitmap indexes * * @return A bitmap indicating rows that match this filter. * * @see Filter#estimateSelectivity(BitmapIndexSelector) */ default ImmutableBitmap getBitmapIndex(BitmapIndexSelector selector) { return getBitmapResult(selector, new DefaultBitmapResultFactory(selector.getBitmapFactory())); }
@Override public ValueMatcher makeMatcher( BitmapIndexSelector selector, ColumnSelectorFactory columnSelectorFactory, RowOffsetMatcherFactory rowOffsetMatcherFactory ) { final List<ValueMatcher> matchers = new ArrayList<>(); final List<ImmutableBitmap> bitmaps = new ArrayList<>(); for (Filter filter : filters) { if (filter.supportsBitmapIndex(selector)) { bitmaps.add(filter.getBitmapIndex(selector)); } else { ValueMatcher matcher = filter.makeMatcher(columnSelectorFactory); matchers.add(matcher); } } if (bitmaps.size() > 0) { ImmutableBitmap combinedBitmap = selector.getBitmapFactory().union(bitmaps); ValueMatcher offsetMatcher = rowOffsetMatcherFactory.makeRowOffsetMatcher(combinedBitmap); matchers.add(0, offsetMatcher); } return makeMatcher(matchers.toArray(AndFilter.EMPTY_VALUE_MATCHER_ARRAY)); }
@Override public ValueMatcher makeMatcher( BitmapIndexSelector selector, ColumnSelectorFactory columnSelectorFactory, RowOffsetMatcherFactory rowOffsetMatcherFactory ) { final List<ValueMatcher> matchers = new ArrayList<>(); final List<ImmutableBitmap> bitmaps = new ArrayList<>(); for (Filter filter : filters) { if (filter.supportsBitmapIndex(selector)) { bitmaps.add(filter.getBitmapIndex(selector)); } else { ValueMatcher matcher = filter.makeMatcher(columnSelectorFactory); matchers.add(matcher); } } if (bitmaps.size() > 0) { ImmutableBitmap combinedBitmap = selector.getBitmapFactory().intersection(bitmaps); ValueMatcher offsetMatcher = rowOffsetMatcherFactory.makeRowOffsetMatcher(combinedBitmap); matchers.add(0, offsetMatcher); } return makeMatcher(matchers.toArray(EMPTY_VALUE_MATCHER_ARRAY)); }