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; }
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; }
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; }