public static boolean isEvaluableRecursively(TupleFilter filter) { if (filter == null) return true; if (!filter.isEvaluable()) return false; for (TupleFilter child : filter.getChildren()) { if (!isEvaluableRecursively(child)) return false; } return true; }
private void collectNonEvaluable(TupleFilter filter, Set<TblColRef> collector) { if (filter == null) return; if (filter.isEvaluable()) { for (TupleFilter child : filter.getChildren()) collectNonEvaluable(child, collector); } else { collectColumnsRecursively(filter, collector); } }
@Override public TupleFilter onSerialize(TupleFilter filter) { if (filter == null) return null; // In case of NOT(unEvaluatableFilter), we should immediately replace it as TRUE, // Otherwise, unEvaluatableFilter will later be replace with TRUE and NOT(unEvaluatableFilter) // will always return FALSE. if (filter.getOperator() == FilterOperatorEnum.NOT && !TupleFilter.isEvaluableRecursively(filter)) { TupleFilter.collectColumns(filter, unevaluatableColumnCollector); return ConstantTupleFilter.TRUE; } // shortcut for unEvaluatable filter if (!filter.isEvaluable()) { TupleFilter.collectColumns(filter, unevaluatableColumnCollector); return ConstantTupleFilter.TRUE; } // map to column onto grid table if (colMapping != null && filter instanceof ColumnTupleFilter) { ColumnTupleFilter colFilter = (ColumnTupleFilter) filter; int gtColIdx = mapCol(colFilter.getColumn()); return new ColumnTupleFilter(info.colRef(gtColIdx)); } // encode constants if (useEncodeConstants && filter instanceof CompareTupleFilter) { return encodeConstants((CompareTupleFilter) filter); } return filter; }
if (!filter.isEvaluable()) { TupleFilter.collectColumns(filter, inevaluableColumns); return ConstantTupleFilter.TRUE;
public static boolean isEvaluableRecursively(TupleFilter filter) { if (filter == null) return true; if (!filter.isEvaluable()) return false; for (TupleFilter child : filter.getChildren()) { if (!isEvaluableRecursively(child)) return false; } return true; }
public static boolean isEvaluableRecursively(TupleFilter filter) { if (filter == null) return true; if (!filter.isEvaluable()) return false; for (TupleFilter child : filter.getChildren()) { if (!isEvaluableRecursively(child)) return false; } return true; }
public static boolean isEvaluableRecursively(TupleFilter filter) { if (filter == null) return true; if (!filter.isEvaluable()) return false; for (TupleFilter child : filter.getChildren()) { if (!isEvaluableRecursively(child)) return false; } return true; }
@Override public TupleFilter onSerialize(TupleFilter filter) { if (filter == null) return null; // In case of NOT(unEvaluatableFilter), we should immediately replace it as TRUE, // Otherwise, unEvaluatableFilter will later be replace with TRUE and NOT(unEvaluatableFilter) // will always return FALSE. if (filter.getOperator() == FilterOperatorEnum.NOT && !TupleFilter.isEvaluableRecursively(filter)) { TupleFilter.collectColumns(filter, unevaluatableColumnCollector); return ConstantTupleFilter.TRUE; } // shortcut for unEvaluatable filter if (!filter.isEvaluable()) { TupleFilter.collectColumns(filter, unevaluatableColumnCollector); return ConstantTupleFilter.TRUE; } // map to column onto grid table if (colMapping != null && filter instanceof ColumnTupleFilter) { ColumnTupleFilter colFilter = (ColumnTupleFilter) filter; int gtColIdx = mapCol(colFilter.getColumn()); return new ColumnTupleFilter(info.colRef(gtColIdx)); } // encode constants if (useEncodeConstants && filter instanceof CompareTupleFilter) { return encodeConstants((CompareTupleFilter) filter); } return filter; }
if (!filter.isEvaluable()) { TupleFilter.collectColumns(filter, inevaluableColumns); return ConstantTupleFilter.TRUE;