Search in sources :

Example 1 with ValueMatcherColumnSelectorStrategy

use of io.druid.query.filter.ValueMatcherColumnSelectorStrategy in project druid by druid-io.

the class Filters method makeValueMatcher.

/**
   * Create a ValueMatcher that applies a predicate to row values.
   * <p>
   * The caller provides a predicate factory that can create a predicate for each value type supported by Druid.
   * See {@link DruidPredicateFactory} for more information.
   * <p>
   * When creating the ValueMatcher, the ValueMatcherFactory implementation should decide what type of predicate
   * to create from the predicate factory based on the ValueType of the specified dimension.
   *
   * @param columnSelectorFactory Selector for columns.
   * @param columnName            The column to filter.
   * @param predicateFactory      Predicate factory
   *
   * @return An object that applies a predicate to row values
   */
public static ValueMatcher makeValueMatcher(final ColumnSelectorFactory columnSelectorFactory, final String columnName, final DruidPredicateFactory predicateFactory) {
    final ColumnCapabilities capabilities = columnSelectorFactory.getColumnCapabilities(columnName);
    // This should be folded into the ValueMatcherColumnSelectorStrategy once that can handle LONG typed columns.
    if (capabilities != null && capabilities.getType() == ValueType.LONG) {
        return getLongPredicateMatcher(columnSelectorFactory.makeLongColumnSelector(columnName), predicateFactory.makeLongPredicate());
    }
    final ColumnSelectorPlus<ValueMatcherColumnSelectorStrategy> selector = DimensionHandlerUtils.createColumnSelectorPlus(ValueMatcherColumnSelectorStrategyFactory.instance(), DefaultDimensionSpec.of(columnName), columnSelectorFactory);
    return selector.getColumnSelectorStrategy().makeValueMatcher(selector.getSelector(), predicateFactory);
}
Also used : ValueMatcherColumnSelectorStrategy(io.druid.query.filter.ValueMatcherColumnSelectorStrategy) ColumnCapabilities(io.druid.segment.column.ColumnCapabilities)

Aggregations

ValueMatcherColumnSelectorStrategy (io.druid.query.filter.ValueMatcherColumnSelectorStrategy)1 ColumnCapabilities (io.druid.segment.column.ColumnCapabilities)1