@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public <T> T getBitmapResult(BitmapIndexSelector selector, BitmapResultFactory<T> bitmapResultFactory) { return bitmapResultFactory.wrapDimensionValue(selector.getBitmapIndex(dimension, value)); }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(boundDimFilter.getDimension()) != null; }
@Override public boolean supportsBitmapIndex(final BitmapIndexSelector selector) { if (requiredBindings.isEmpty()) { // Constant expression. return true; } else if (requiredBindings.size() == 1) { // Single-column expression. We can use bitmap indexes if this column has an index and does not have // multiple values. The lack of multiple values is important because expression filters treat multi-value // arrays as nulls, which doesn't permit index based filtering. final String column = Iterables.getOnlyElement(requiredBindings); return selector.getBitmapIndex(column) != null && !selector.hasMultipleValues(column); } else { // Multi-column expression. return false; } }
@Override public double estimateSelectivity(BitmapIndexSelector indexSelector) { return (double) indexSelector.getBitmapIndex(dimension, value).size() / indexSelector.getNumRows(); }
final BitmapIndex bitmapIndex = selector.getBitmapIndex(dimension); return makePredicateQualifyingBitmapIterable(bitmapIndex, predicate, dimValues);
final BitmapIndex bitmapIndex = indexSelector.getBitmapIndex(dimension); return estimateSelectivity( bitmapIndex,
@Override public <T> T getBitmapResult(BitmapIndexSelector selector, BitmapResultFactory<T> bitmapResultFactory) { if (extractionFn == null) { final BitmapIndex bitmapIndex = selector.getBitmapIndex(dimension); return bitmapResultFactory.unionDimensionValueBitmaps(getBitmapIterable(bitmapIndex)); } else { return Filters.matchPredicate( dimension, selector, bitmapResultFactory, getPredicateFactory().makeStringPredicate() ); } }
selector.getBitmapIndex( dimension, NullHandling.emptyToNullIfNeeded(likeMatcher.getPrefix()) } else if (isSimplePrefix()) { final BitmapIndex bitmapIndex = selector.getBitmapIndex(dimension);
@Override public double estimateSelectivity(BitmapIndexSelector indexSelector) { if (extractionFn == null) { final BitmapIndex bitmapIndex = indexSelector.getBitmapIndex(dimension); return Filters.estimateSelectivity( bitmapIndex, IntIteratorUtils.toIntList(getBitmapIndexIterable(bitmapIndex).iterator()), indexSelector.getNumRows() ); } else { return Filters.estimateSelectivity( dimension, indexSelector, getPredicateFactory().makeStringPredicate() ); } }
@Override public double estimateSelectivity(BitmapIndexSelector indexSelector) { if (supportShortCircuit()) { final BitmapIndex bitmapIndex = indexSelector.getBitmapIndex(boundDimFilter.getDimension()); if (bitmapIndex == null || bitmapIndex.getCardinality() == 0) { return doesMatch(null) ? 1. : 0.; } return Filters.estimateSelectivity( bitmapIndex, getBitmapIndexList(boundDimFilter, bitmapIndex), indexSelector.getNumRows() ); } else { return Filters.estimateSelectivity( boundDimFilter.getDimension(), indexSelector, getPredicateFactory().makeStringPredicate() ); } }
@Override public <T> T getBitmapResult(BitmapIndexSelector selector, BitmapResultFactory<T> bitmapResultFactory) { if (supportShortCircuit()) { final BitmapIndex bitmapIndex = selector.getBitmapIndex(boundDimFilter.getDimension()); if (bitmapIndex == null || bitmapIndex.getCardinality() == 0) { if (doesMatch(null)) { return bitmapResultFactory.wrapAllTrue(Filters.allTrue(selector)); } else { return bitmapResultFactory.wrapAllFalse(Filters.allFalse(selector)); } } return bitmapResultFactory.unionDimensionValueBitmaps(getBitmapIterator(boundDimFilter, bitmapIndex)); } else { return Filters.matchPredicate( boundDimFilter.getDimension(), selector, bitmapResultFactory, getPredicateFactory().makeStringPredicate() ); } }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }
@Override public boolean supportsBitmapIndex(BitmapIndexSelector selector) { return selector.getBitmapIndex(dimension) != null; }