int col = colMapping == null ? externalCol.getColumnDesc().getZeroBasedIndex() : mapCol(externalCol); Set newValues = Sets.newHashSet(); for (Object value : constValues) { code = translate(col, value, 0); if (code != null) newValues.add(code); Set notInValues = Sets.newHashSet(); for (Object value : constValues) { code = translate(col, value, 0); if (code != null) notInValues.add(code); code = translate(col, firstValue, 0); if (code == null) { result = newCompareFilter(TupleFilter.FilterOperatorEnum.ISNOTNULL, externalCol); } else { newCompareFilter.addChild(new ConstantTupleFilter(code)); code = translate(col, firstValue, 0); if (code == null) { code = translate(col, firstValue, -1); if (code == null) result = newCompareFilter(TupleFilter.FilterOperatorEnum.ISNOTNULL, externalCol); else result = newCompareFilter(FilterOperatorEnum.LTE, externalCol, code); } else { newCompareFilter.addChild(new ConstantTupleFilter(code));
int col = colMapping == null ? externalCol.getColumnDesc().getZeroBasedIndex() : mapCol(externalCol); Set newValues = Sets.newHashSet(); for (Object value : constValues) { code = translate(col, value, 0); if (code != null) newValues.add(code); Set notInValues = Sets.newHashSet(); for (Object value : constValues) { code = translate(col, value, 0); if (code != null) notInValues.add(code); code = translate(col, firstValue, 0); if (code == null) { result = newCompareFilter(TupleFilter.FilterOperatorEnum.ISNOTNULL, externalCol); } else { newCompareFilter.addChild(new ConstantTupleFilter(code)); code = translate(col, firstValue, 0); if (code == null) { code = translate(col, firstValue, -1); if (code == null) result = newCompareFilter(TupleFilter.FilterOperatorEnum.ISNOTNULL, externalCol); else result = newCompareFilter(FilterOperatorEnum.LTE, externalCol, code); } else { newCompareFilter.addChild(new ConstantTupleFilter(code));
@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; }
private static TupleFilter convertFilter(TupleFilter rootFilter, final GTInfo info, // final Map<TblColRef, Integer> colMapping, final boolean encodeConstants, // final Set<TblColRef> unevaluatableColumnCollector) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); GTConvertDecorator decorator = new GTConvertDecorator(unevaluatableColumnCollector, colMapping, info, encodeConstants); byte[] bytes = TupleFilterSerializer.serialize(rootFilter, decorator, filterCodeSystem); return TupleFilterSerializer.deserialize(bytes, filterCodeSystem); }
@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; }
private static TupleFilter convertFilter(TupleFilter rootFilter, final GTInfo info, // final Map<TblColRef, Integer> colMapping, final boolean encodeConstants, // final Set<TblColRef> unevaluatableColumnCollector) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); GTConvertDecorator decorator = new GTConvertDecorator(unevaluatableColumnCollector, colMapping, info, encodeConstants); byte[] bytes = TupleFilterSerializer.serialize(rootFilter, decorator, filterCodeSystem); return TupleFilterSerializer.deserialize(bytes, filterCodeSystem); }