use of org.apache.druid.query.filter.Filter in project druid by druid-io.
the class ExtractionDimFilterTest method testNormal.
@Test
public void testNormal() {
Filter extractionFilter = new SelectorDimFilter("foo", "extractDimVal", DIM_EXTRACTION_FN).toFilter();
ImmutableBitmap immutableBitmap = extractionFilter.getBitmapIndex(BITMAP_INDEX_SELECTOR);
Assert.assertEquals(1, immutableBitmap.size());
}
use of org.apache.druid.query.filter.Filter in project druid by druid-io.
the class FilterCnfConversionTest method testToCnfFilterThatPullCannotConvertToCnfProperly.
@Test
public void testToCnfFilterThatPullCannotConvertToCnfProperly() {
final Filter filter = FilterTestUtils.or(FilterTestUtils.and(FilterTestUtils.selector("col1", "val1"), FilterTestUtils.selector("col2", "val2")), FilterTestUtils.and(FilterTestUtils.selector("col1", "val1"), FilterTestUtils.selector("col3", "val3"), FilterTestUtils.selector("col4", "val4")));
final Filter expectedCnf = FilterTestUtils.and(FilterTestUtils.selector("col1", "val1"), FilterTestUtils.or(FilterTestUtils.selector("col2", "val2"), FilterTestUtils.selector("col3", "val3")), FilterTestUtils.or(FilterTestUtils.selector("col2", "val2"), FilterTestUtils.selector("col4", "val4")));
assertFilter(filter, expectedCnf, Filters.toCnf(filter));
}
use of org.apache.druid.query.filter.Filter in project druid by druid-io.
the class FilterCnfConversionTest method testToCnfCollapsibleBigFilter.
@Test
public void testToCnfCollapsibleBigFilter() {
List<Filter> ands = new ArrayList<>();
List<Filter> ors = new ArrayList<>();
for (int i = 0; i < 12; i++) {
ands.add(FilterTestUtils.and(FilterTestUtils.selector("col3", "val3"), FilterTestUtils.selector("col4", "val4"), FilterTestUtils.selector("col5", StringUtils.format("val%d", i))));
ors.add(FilterTestUtils.selector("col5", StringUtils.format("val%d", i)));
}
final Filter bigFilter = FilterTestUtils.and(new OrFilter(ands), FilterTestUtils.selector("col1", "val1"), FilterTestUtils.selector("col2", "val2"));
final Filter expectedCnf = FilterTestUtils.and(FilterTestUtils.selector("col3", "val3"), FilterTestUtils.selector("col4", "val4"), new OrFilter(ors), FilterTestUtils.selector("col1", "val1"), FilterTestUtils.selector("col2", "val2"));
final Filter cnf = Filters.toCnf(bigFilter);
assertFilter(bigFilter, expectedCnf, cnf);
}
use of org.apache.druid.query.filter.Filter in project druid by druid-io.
the class FilterCnfConversionTest method testPushDownNotLeafNot.
@Test
public void testPushDownNotLeafNot() {
final Filter filter = FilterTestUtils.and(FilterTestUtils.selector("col1", "1"), FilterTestUtils.selector("col2", "2"), FilterTestUtils.not(FilterTestUtils.selector("col3", "3")));
final Filter pushedDown = HiveCnfHelper.pushDownNot(filter);
assertFilter(filter, filter, pushedDown);
}
use of org.apache.druid.query.filter.Filter in project druid by druid-io.
the class FilterCnfConversionTest method testToCnfWithMuchReducibleFilter.
@Test
public void testToCnfWithMuchReducibleFilter() {
final Filter muchReducible = FilterTestUtils.and(// should be flattened
FilterTestUtils.and(FilterTestUtils.and(FilterTestUtils.and(FilterTestUtils.selector("col1", "val1")))), // should be flattened
FilterTestUtils.and(FilterTestUtils.or(FilterTestUtils.and(FilterTestUtils.selector("col1", "val1")))), // should be flattened
FilterTestUtils.or(FilterTestUtils.and(FilterTestUtils.or(FilterTestUtils.selector("col1", "val1")))), // should eliminate duplicate filters
FilterTestUtils.selector("col1", "val1"), FilterTestUtils.selector("col2", "val2"), FilterTestUtils.and(FilterTestUtils.selector("col1", "val1"), FilterTestUtils.selector("col2", "val2")), FilterTestUtils.and(FilterTestUtils.selector("col1", "val1"), FilterTestUtils.and(FilterTestUtils.selector("col2", "val2"), FilterTestUtils.selector("col1", "val1"))));
final Filter expected = FilterTestUtils.and(FilterTestUtils.selector("col1", "val1"), FilterTestUtils.selector("col2", "val2"));
final Filter cnf = Filters.toCnf(muchReducible);
assertFilter(muchReducible, expected, cnf);
}
Aggregations