@Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { final ValueMatcher baseMatcher = baseFilter.makeMatcher(factory); return new ValueMatcher() { @Override public boolean matches() { return !baseMatcher.matches(); } @Override public void inspectRuntimeShape(RuntimeShapeInspector inspector) { inspector.visit("baseMatcher", baseMatcher); } }; }
@Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { final ValueMatcher[] matchers = new ValueMatcher[filters.size()]; for (int i = 0; i < filters.size(); i++) { matchers[i] = filters.get(i).makeMatcher(factory); } return makeMatcher(matchers); }
@Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { return theFilter.makeMatcher(factory); }
@Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { final ValueMatcher[] matchers = new ValueMatcher[filters.size()]; for (int i = 0; i < filters.size(); i++) { matchers[i] = filters.get(i).makeMatcher(factory); } return makeMatcher(matchers); }
@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 Aggregator factorize(ColumnSelectorFactory columnSelectorFactory) { final ValueMatcher valueMatcher = Filters.toFilter(filter).makeMatcher(columnSelectorFactory); return new FilteredAggregator( valueMatcher, delegate.factorize(columnSelectorFactory) ); }
@Override public BufferAggregator factorizeBuffered(ColumnSelectorFactory columnSelectorFactory) { final ValueMatcher valueMatcher = Filters.toFilter(filter).makeMatcher(columnSelectorFactory); return new FilteredBufferAggregator( valueMatcher, delegate.factorizeBuffered(columnSelectorFactory) ); }
@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)); }
Transformer(final TransformSpec transformSpec, final Map<String, ValueType> rowSignature) { for (final Transform transform : transformSpec.getTransforms()) { transforms.put(transform.getName(), transform.getRowFunction()); } if (transformSpec.getFilter() != null) { valueMatcher = transformSpec.getFilter().toFilter() .makeMatcher( RowBasedColumnSelectorFactory.create( rowSupplierForValueMatcher, rowSignature ) ); } else { valueMatcher = null; } }
IncrementalIndexCursor( VirtualColumns virtualColumns, boolean descending, Filter filter, Interval interval, Interval actualInterval, Granularity gran ) { currEntry = new IncrementalIndexRowHolder(); columnSelectorFactory = new IncrementalIndexColumnSelectorFactory(index, virtualColumns, descending, currEntry); // Set maxRowIndex before creating the filterMatcher. See https://github.com/apache/incubator-druid/pull/6340 maxRowIndex = index.getLastRowIndex(); filterMatcher = filter == null ? BooleanValueMatcher.of(true) : filter.makeMatcher(columnSelectorFactory); numAdvanced = -1; final long timeStart = Math.max(interval.getStartMillis(), actualInterval.getStartMillis()); cursorIterable = index.getFacts().timeRangeIterable( descending, timeStart, Math.min(actualInterval.getEndMillis(), gran.increment(interval.getStart()).getMillis()) ); emptyRange = !cursorIterable.iterator().hasNext(); time = gran.toDateTime(interval.getStartMillis()); reset(); }
FilteredOffset( Offset baseOffset, ColumnSelectorFactory columnSelectorFactory, boolean descending, Filter postFilter, ColumnSelectorBitmapIndexSelector bitmapIndexSelector ) { this.baseOffset = baseOffset; RowOffsetMatcherFactory rowOffsetMatcherFactory = new CursorOffsetHolderRowOffsetMatcherFactory( baseOffset.getBaseReadableOffset(), descending ); if (postFilter instanceof BooleanFilter) { filterMatcher = ((BooleanFilter) postFilter).makeMatcher( bitmapIndexSelector, columnSelectorFactory, rowOffsetMatcherFactory ); } else { if (postFilter.supportsBitmapIndex(bitmapIndexSelector)) { filterMatcher = rowOffsetMatcherFactory.makeRowOffsetMatcher( postFilter.getBitmapIndex(bitmapIndexSelector) ); } else { filterMatcher = postFilter.makeMatcher(columnSelectorFactory); } } incrementIfNeededOnCreationOrReset(); }
private List<String> selectColumnValuesMatchingFilterUsingRowBasedColumnSelectorFactory( final DimFilter filter, final String selectColumn ) { // Generate rowType final Map<String, ValueType> rowSignature = new HashMap<>(); for (String columnName : Iterables.concat(adapter.getAvailableDimensions(), adapter.getAvailableMetrics())) { rowSignature.put(columnName, adapter.getColumnCapabilities(columnName).getType()); } // Perform test final SettableSupplier<InputRow> rowSupplier = new SettableSupplier<>(); final ValueMatcher matcher = makeFilter(filter).makeMatcher( VIRTUAL_COLUMNS.wrap(RowBasedColumnSelectorFactory.create(rowSupplier, rowSignature)) ); final List<String> values = new ArrayList<>(); for (InputRow row : rows) { rowSupplier.set(row); if (matcher.matches()) { values.add((String) row.getRaw(selectColumn)); } } return values; }
final ValueMatcher filterMatcher = filter == null ? BooleanValueMatcher.of(true) : filter.makeMatcher(columnSelectorFactory);
@Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { final ValueMatcher baseMatcher = baseFilter.makeMatcher(factory); return new ValueMatcher() { @Override public boolean matches() { return !baseMatcher.matches(); } @Override public void inspectRuntimeShape(RuntimeShapeInspector inspector) { inspector.visit("baseMatcher", baseMatcher); } }; }
@Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { final ValueMatcher[] matchers = new ValueMatcher[filters.size()]; for (int i = 0; i < filters.size(); i++) { matchers[i] = filters.get(i).makeMatcher(factory); } return makeMatcher(matchers); }
@Override public ValueMatcher makeMatcher(ColumnSelectorFactory factory) { final ValueMatcher[] matchers = new ValueMatcher[filters.size()]; for (int i = 0; i < filters.size(); i++) { matchers[i] = filters.get(i).makeMatcher(factory); } return makeMatcher(matchers); }
@Override public Aggregator factorize(ColumnSelectorFactory columnSelectorFactory) { final ValueMatcher valueMatcher = Filters.toFilter(filter).makeMatcher(columnSelectorFactory); return new FilteredAggregator( valueMatcher, delegate.factorize(columnSelectorFactory) ); }
@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 BufferAggregator factorizeBuffered(ColumnSelectorFactory columnSelectorFactory) { final ValueMatcher valueMatcher = Filters.toFilter(filter).makeMatcher(columnSelectorFactory); return new FilteredBufferAggregator( valueMatcher, delegate.factorizeBuffered(columnSelectorFactory) ); }
Transformer(final TransformSpec transformSpec, final Map<String, ValueType> rowSignature) { for (final Transform transform : transformSpec.getTransforms()) { transforms.put(transform.getName(), transform.getRowFunction()); } if (transformSpec.getFilter() != null) { valueMatcher = transformSpec.getFilter().toFilter() .makeMatcher( RowBasedColumnSelectorFactory.create( rowSupplierForValueMatcher, rowSignature ) ); } else { valueMatcher = null; } }