private List<TupleFilter> cartesianProduct(List<TupleFilter> leftOrFilters, TupleFilter partialAndFilter, int maxFlatChildrenSize) { List<TupleFilter> oldProductFilters = new LinkedList<TupleFilter>(); oldProductFilters.add(partialAndFilter); for (TupleFilter orFilter : leftOrFilters) { List<TupleFilter> newProductFilters = new LinkedList<TupleFilter>(); for (TupleFilter orChildFilter : orFilter.getChildren()) { for (TupleFilter productFilter : oldProductFilters) { TupleFilter fullAndFilter = productFilter.copy(); fullAndFilter.addChildren(orChildFilter.getChildren()); newProductFilters.add(fullAndFilter); if (newProductFilters.size() > maxFlatChildrenSize) { throw new IllegalStateException("the filter is too large after do the flat, size=" + newProductFilters.size()); } } } oldProductFilters = newProductFilters; } return oldProductFilters; }
flatFilter = new LogicalTupleFilter(FilterOperatorEnum.AND); for (TupleFilter andChild : andChildren) { flatFilter.addChildren(andChild.getChildren()); flatFilter.addChildren(fullAndFilters); flatFilter.addChildren(orChild.getChildren()); flatFilter.addChildren(andChildren); } else if (op == FilterOperatorEnum.NOT) { assert (filter.children.size() == 1);
ret.addChildren(extraFilters); for (Map.Entry<TblColRef, Pair<Set<Object>, Map<String, Object>>> entry : inColumnMap.entrySet()) { CompareTupleFilter inFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.IN);
@Test // Not(And(true, false)) ==> Or(false, true) public void removeNotTest2() { TupleFilter notFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.NOT); TupleFilter andFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND); andFilter.addChildren(ConstantTupleFilter.TRUE, ConstantTupleFilter.FALSE); notFilter.addChild(andFilter); TupleFilter orFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.OR); orFilter.addChildren(ConstantTupleFilter.FALSE, ConstantTupleFilter.TRUE); Assert.assertEquals(orFilter, notFilter.removeNot()); }
@Test // And(Not(true), false) ==> And(false, false) public void removeNotTest3() { TupleFilter andFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND); TupleFilter notFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.NOT); notFilter.addChild(ConstantTupleFilter.TRUE); andFilter.addChildren(notFilter, ConstantTupleFilter.FALSE); TupleFilter andFilter2 = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND); andFilter2.addChildren(ConstantTupleFilter.FALSE, ConstantTupleFilter.FALSE); Assert.assertEquals(andFilter2, andFilter.removeNot()); }
private List<TupleFilter> cartesianProduct(List<TupleFilter> leftOrFilters, TupleFilter partialAndFilter) { List<TupleFilter> oldProductFilters = new LinkedList<TupleFilter>(); oldProductFilters.add(partialAndFilter); for (TupleFilter orFilter : leftOrFilters) { List<TupleFilter> newProductFilters = new LinkedList<TupleFilter>(); for (TupleFilter orChildFilter : orFilter.getChildren()) { for (TupleFilter productFilter : oldProductFilters) { TupleFilter fullAndFilter = productFilter.copy(); fullAndFilter.addChildren(orChildFilter.getChildren()); newProductFilters.add(fullAndFilter); } } oldProductFilters = newProductFilters; } return oldProductFilters; }
flatFilter = new LogicalTupleFilter(FilterOperatorEnum.AND); for (TupleFilter andChild : andChildren) { flatFilter.addChildren(andChild.getChildren()); flatFilter.addChildren(fullAndFilters); flatFilter.addChildren(orChild.getChildren()); flatFilter.addChildren(andChildren); } else if (op == FilterOperatorEnum.NOT) { assert (filter.children.size() == 1);
private List<TupleFilter> cartesianProduct(List<TupleFilter> leftOrFilters, TupleFilter partialAndFilter) { List<TupleFilter> oldProductFilters = new LinkedList<TupleFilter>(); oldProductFilters.add(partialAndFilter); for (TupleFilter orFilter : leftOrFilters) { List<TupleFilter> newProductFilters = new LinkedList<TupleFilter>(); for (TupleFilter orChildFilter : orFilter.getChildren()) { for (TupleFilter productFilter : oldProductFilters) { TupleFilter fullAndFilter = productFilter.copy(); fullAndFilter.addChildren(orChildFilter.getChildren()); newProductFilters.add(fullAndFilter); } } oldProductFilters = newProductFilters; } return oldProductFilters; }
private List<TupleFilter> cartesianProduct(List<TupleFilter> leftOrFilters, TupleFilter partialAndFilter) { List<TupleFilter> oldProductFilters = new LinkedList<TupleFilter>(); oldProductFilters.add(partialAndFilter); for (TupleFilter orFilter : leftOrFilters) { List<TupleFilter> newProductFilters = new LinkedList<TupleFilter>(); for (TupleFilter orChildFilter : orFilter.getChildren()) { for (TupleFilter productFilter : oldProductFilters) { TupleFilter fullAndFilter = productFilter.copy(); fullAndFilter.addChildren(orChildFilter.getChildren()); newProductFilters.add(fullAndFilter); } } oldProductFilters = newProductFilters; } return oldProductFilters; }
flatFilter = new LogicalTupleFilter(FilterOperatorEnum.AND); for (TupleFilter andChild : andChildren) { flatFilter.addChildren(andChild.getChildren()); flatFilter.addChildren(fullAndFilters); flatFilter.addChildren(orChild.getChildren()); flatFilter.addChildren(andChildren); } else if (op == FilterOperatorEnum.NOT) { assert (filter.children.size() == 1);
flatFilter = new LogicalTupleFilter(FilterOperatorEnum.AND); for (TupleFilter andChild : andChildren) { flatFilter.addChildren(andChild.getChildren()); flatFilter.addChildren(fullAndFilters); flatFilter.addChildren(orChild.getChildren()); flatFilter.addChildren(andChildren); } else if (op == FilterOperatorEnum.NOT) { assert (filter.children.size() == 1);