public SegmentPruner(TupleFilter filter) { this.mustTrueCompares = filter == null ? Collections.<CompareTupleFilter> emptySet() : filter.findMustTrueCompareFilters(); }
public Set<CompareTupleFilter> findMustTrueCompareFilters() { Set<CompareTupleFilter> result = Sets.newHashSet(); findMustTrueCompareFilters(this, result); return result; }
private void findMustTrueCompareFilters(TupleFilter filter, Set<CompareTupleFilter> result) { if (filter instanceof CompareTupleFilter) { if (((CompareTupleFilter) filter).getColumn() != null) { result.add((CompareTupleFilter) filter); } return; } if (filter instanceof LogicalTupleFilter) { if (filter.getOperator() == FilterOperatorEnum.AND) { for (TupleFilter child : filter.getChildren()) { findMustTrueCompareFilters(child, result); } } return; } }
@Test public void testMustTrueTupleFilter() { TupleFilter andFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND); TupleFilter andFilter2 = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND); TupleFilter orFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.OR); andFilter.addChild(andFilter2); andFilter.addChild(orFilter); Set<CompareTupleFilter> trueTupleFilters = andFilter.findMustTrueCompareFilters(); Assert.assertTrue(trueTupleFilters.isEmpty()); TupleFilter compFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.GT); compFilter.addChild(new ColumnTupleFilter(TblColRef.newInnerColumn("test1", TblColRef.InnerDataTypeEnum.LITERAL))); TupleFilter compFilter2 = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.GT); compFilter2.addChild(new ColumnTupleFilter(TblColRef.newInnerColumn("test2", TblColRef.InnerDataTypeEnum.LITERAL))); andFilter2.addChild(compFilter); orFilter.addChild(compFilter2); Assert.assertEquals(Sets.newHashSet(compFilter), andFilter.findMustTrueCompareFilters()); Assert.assertEquals(Sets.newHashSet(compFilter2), compFilter2.findMustTrueCompareFilters()); }
public Set<CompareTupleFilter> findMustTrueCompareFilters() { Set<CompareTupleFilter> result = Sets.newHashSet(); findMustTrueCompareFilters(this, result); return result; }
public SegmentPruner(TupleFilter filter) { this.mustTrueCompares = filter == null ? Collections.<CompareTupleFilter> emptySet() : filter.findMustTrueCompareFilters(); }
private void findMustTrueCompareFilters(TupleFilter filter, Set<CompareTupleFilter> result) { if (filter instanceof CompareTupleFilter) { if (((CompareTupleFilter) filter).getColumn() != null) { result.add((CompareTupleFilter) filter); } return; } if (filter instanceof LogicalTupleFilter) { if (filter.getOperator() == FilterOperatorEnum.AND) { for (TupleFilter child : filter.getChildren()) { findMustTrueCompareFilters(child, result); } } return; } }