@Override public TupleFilter acceptOptimizeTransformer(FilterOptimizeTransformer transformer) { List<TupleFilter> newChildren = Lists.newArrayList(); for (TupleFilter child : this.getChildren()) { if (child instanceof IOptimizeableTupleFilter) { newChildren.add(((IOptimizeableTupleFilter) child).acceptOptimizeTransformer(transformer)); } else { newChildren.add(child); } } this.reinitWithChildren(newChildren); return transformer.visit(this); }
ListIterator<TupleFilter> childIterator = (ListIterator<TupleFilter>) logicalTupleFilter.getChildren() .listIterator(); while (childIterator.hasNext()) { if (logicalTupleFilter.getChildren().size() == 0) { return ConstantTupleFilter.FALSE; ListIterator<TupleFilter> childIterator = (ListIterator<TupleFilter>) logicalTupleFilter.getChildren() .listIterator(); while (childIterator.hasNext()) { if (logicalTupleFilter.getChildren().size() == 0) { return ConstantTupleFilter.TRUE;
private void findMustEqualColsAndValues(TupleFilter filter, Collection<TblColRef> lookingForCols, HashMap<TblColRef, Object> result) { if (filter instanceof CompareTupleFilter) { CompareTupleFilter comp = (CompareTupleFilter) filter; TblColRef col = comp.getColumn(); if (lookingForCols.contains(col)) { if (comp.getOperator() == FilterOperatorEnum.EQ) result.put(col, comp.getFirstValue()); else if (comp.getOperator() == FilterOperatorEnum.ISNULL) result.put(col, null); } return; } if (filter instanceof LogicalTupleFilter) { LogicalTupleFilter logic = (LogicalTupleFilter) filter; if (logic.getOperator() == FilterOperatorEnum.AND) { for (TupleFilter child : logic.getChildren()) findMustEqualColsAndValues(child, lookingForCols, result); } return; } }
private ConciseSet evalLogical(LogicalTupleFilter filter) { List<? extends TupleFilter> children = filter.getChildren(); switch (filter.getOperator()) { case AND: return evalLogicalAnd(children); case OR: return evalLogicalOr(children); case NOT: return evalLogicalNot(children); default: throw new IllegalStateException("Unsupported operator " + filter.getOperator()); } }
@Override public TupleFilter acceptOptimizeTransformer(FilterOptimizeTransformer transformer) { List<TupleFilter> newChildren = Lists.newArrayList(); for (TupleFilter child : this.getChildren()) { if (child instanceof IOptimizeableTupleFilter) { newChildren.add(((IOptimizeableTupleFilter) child).acceptOptimizeTransformer(transformer)); } else { newChildren.add(child); } } this.reinitWithChildren(newChildren); return transformer.visit(this); }
ListIterator<TupleFilter> childIterator = (ListIterator<TupleFilter>) logicalTupleFilter.getChildren() .listIterator(); while (childIterator.hasNext()) { if (logicalTupleFilter.getChildren().size() == 0) { return ConstantTupleFilter.FALSE; ListIterator<TupleFilter> childIterator = (ListIterator<TupleFilter>) logicalTupleFilter.getChildren() .listIterator(); while (childIterator.hasNext()) { if (logicalTupleFilter.getChildren().size() == 0) { return ConstantTupleFilter.TRUE;
private void findMustEqualColsAndValues(TupleFilter filter, Collection<TblColRef> lookingForCols, HashMap<TblColRef, Object> result) { if (filter instanceof CompareTupleFilter) { CompareTupleFilter comp = (CompareTupleFilter) filter; TblColRef col = comp.getColumn(); if (lookingForCols.contains(col)) { if (comp.getOperator() == FilterOperatorEnum.EQ) result.put(col, comp.getFirstValue()); else if (comp.getOperator() == FilterOperatorEnum.ISNULL) result.put(col, null); } return; } if (filter instanceof LogicalTupleFilter) { LogicalTupleFilter logic = (LogicalTupleFilter) filter; if (logic.getOperator() == FilterOperatorEnum.AND) { for (TupleFilter child : logic.getChildren()) findMustEqualColsAndValues(child, lookingForCols, result); } return; } }