@Override public TupleExpression convertInnerExpression(TupleExpression expression) { return convertFilterColumnsAndConstants(expression, info, mapping, innerFuncMap, unevaluatableColumnCollector); }
public static TupleFilter convertFilterColumnsAndConstants(TupleFilter rootFilter, GTInfo info, // List<TblColRef> colMapping, Set<TblColRef> unevaluatableColumnCollector) { Map<TblColRef, Integer> map = colListToMap(colMapping); return convertFilterColumnsAndConstants(rootFilter, info, map, unevaluatableColumnCollector); }
public static TupleExpression convertFilterColumnsAndConstants(TupleExpression rootExpression, GTInfo info, CuboidToGridTableMapping mapping, // Map<TblColRef, FunctionDesc> innerFuncMap, Set<TblColRef> unevaluatableColumnCollector) { return convertExpression(rootExpression, info, mapping, innerFuncMap, true, unevaluatableColumnCollector); }
BytesUtil.writeByteArray(GTUtil.serializeGTFilter(value.filterPushDown, value.info), out); BytesUtil.writeVInt(c, out); BytesUtil.writeByteArray(TupleExpressionSerializer.serialize(tupleExpr, GTUtil.wrap(value.info.codeSystem.getComparator())), out);
public static byte[] serializeGTFilter(TupleFilter gtFilter, GTInfo info) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); return TupleFilterSerializer.serialize(gtFilter, filterCodeSystem); }
GTUtil.serializeGTFilter(scanRequest.getFilterPushDown(), scanRequest.getInfo()), out); ImmutableBitSet.serializer.serialize(scanRequest.getAggrGroupBy(), out); ImmutableBitSet.serializer.serialize(scanRequest.getAggrMetrics(), out);
TupleFilter sGTFilter = GTUtil.deserializeGTFilter(BytesUtil.readByteArray(in), sInfo); int sC = BytesUtil.readVInt(in); TupleExpression sTupleExpr = TupleExpressionSerializer.deserialize(BytesUtil.readByteArray(in), GTUtil.wrap(sInfo.codeSystem.getComparator())); sTupleExpressionMap.put(sC, sTupleExpr);
public static TupleFilter convertFilterUnevaluatable(TupleFilter rootFilter, GTInfo info, // Set<TblColRef> unevaluatableColumnCollector) { return convertFilter(rootFilter, info, null, false, unevaluatableColumnCollector); }
public TblColRef colRef(int i) { if (colRefs == null) { colRefs = new TblColRef[nColumns]; } if (colRefs[i] == null) { colRefs[i] = GTUtil.tblColRef(i, colTypes[i].toString()); } return colRefs[i]; }
private void validateFilterPushDown(GTInfo info) { if (!hasFilterPushDown()) return; Set<TblColRef> filterColumns = Sets.newHashSet(); TupleFilter.collectColumns(filterPushDown, filterColumns); for (TblColRef col : filterColumns) { // filter columns must belong to the table info.validateColRef(col); // filter columns must be returned to satisfy upper layer evaluation (calcite) columns = columns.set(col.getColumnDesc().getZeroBasedIndex()); } // un-evaluatable filter must be removed if (!TupleFilter.isEvaluableRecursively(filterPushDown)) { Set<TblColRef> unevaluableColumns = Sets.newHashSet(); filterPushDown = GTUtil.convertFilterUnevaluatable(filterPushDown, info, unevaluableColumns); // columns in un-evaluatable filter must be returned without loss so upper layer can do final evaluation if (hasAggregation()) { for (TblColRef col : unevaluableColumns) { aggrGroupBy = aggrGroupBy.set(col.getColumnDesc().getZeroBasedIndex()); } } } }
BytesUtil.writeByteArray(GTUtil.serializeGTFilter(value.filterPushDown, value.info), out); BytesUtil.writeVInt(c, out); BytesUtil.writeByteArray(TupleExpressionSerializer.serialize(tupleExpr, GTUtil.wrap(value.info.codeSystem.getComparator())), out);
public static TupleFilter deserializeGTFilter(byte[] bytes, GTInfo info) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); return TupleFilterSerializer.deserialize(bytes, filterCodeSystem); }
GTUtil.serializeGTFilter(scanRequest.getFilterPushDown(), scanRequest.getInfo()), out); ImmutableBitSet.serializer.serialize(scanRequest.getAggrGroupBy(), out); ImmutableBitSet.serializer.serialize(scanRequest.getAggrMetrics(), out);
TupleFilter sGTFilter = GTUtil.deserializeGTFilter(BytesUtil.readByteArray(in), sInfo); int sC = BytesUtil.readVInt(in); TupleExpression sTupleExpr = TupleExpressionSerializer.deserialize(BytesUtil.readByteArray(in), GTUtil.wrap(sInfo.codeSystem.getComparator())); sTupleExpressionMap.put(sC, sTupleExpr);
public static TupleFilter convertFilterColumnsAndConstants(TupleFilter rootFilter, GTInfo info, // Map<TblColRef, Integer> colMapping, Set<TblColRef> unevaluatableColumnCollector) { TupleFilter filter = convertFilter(rootFilter, info, colMapping, true, unevaluatableColumnCollector); // optimize the filter: after translating with dictionary, some filters become determined // e.g. // ( a = 'value_in_dict' OR a = 'value_not_in_dict') will become (a = 'value_in_dict' OR ConstantTupleFilter.FALSE) // use the following to further trim the filter to (a = 'value_in_dict') // The goal is to avoid too many children after flatten filter step filter = new FilterOptimizeTransformer().transform(filter); return filter; }
public TblColRef colRef(int i) { if (colRefs == null) { colRefs = new TblColRef[nColumns]; } if (colRefs[i] == null) { colRefs[i] = GTUtil.tblColRef(i, colTypes[i].toString()); } return colRefs[i]; }
private void validateFilterPushDown(GTInfo info) { if (!hasFilterPushDown()) return; Set<TblColRef> filterColumns = Sets.newHashSet(); TupleFilter.collectColumns(filterPushDown, filterColumns); for (TblColRef col : filterColumns) { // filter columns must belong to the table info.validateColRef(col); // filter columns must be returned to satisfy upper layer evaluation (calcite) columns = columns.set(col.getColumnDesc().getZeroBasedIndex()); } // un-evaluatable filter must be removed if (!TupleFilter.isEvaluableRecursively(filterPushDown)) { Set<TblColRef> unevaluableColumns = Sets.newHashSet(); filterPushDown = GTUtil.convertFilterUnevaluatable(filterPushDown, info, unevaluableColumns); // columns in un-evaluatable filter must be returned without loss so upper layer can do final evaluation if (hasAggregation()) { for (TblColRef col : unevaluableColumns) { aggrGroupBy = aggrGroupBy.set(col.getColumnDesc().getZeroBasedIndex()); } } } }
public static TupleExpression convertFilterColumnsAndConstants(TupleExpression rootExpression, GTInfo info, CuboidToGridTableMapping mapping, Set<TblColRef> unevaluatableColumnCollector) { Map<TblColRef, FunctionDesc> innerFuncMap = Maps.newHashMap(); return convertFilterColumnsAndConstants(rootExpression, info, mapping, innerFuncMap, unevaluatableColumnCollector); }
public static TupleFilter convertFilterColumnsAndConstants(TupleFilter rootFilter, GTInfo info, // List<TblColRef> colMapping, Set<TblColRef> unevaluatableColumnCollector) { Map<TblColRef, Integer> map = colListToMap(colMapping); return convertFilterColumnsAndConstants(rootFilter, info, map, unevaluatableColumnCollector); }
public GTFilterScanner(IGTScanner delegated, GTScanRequest req, IGTBypassChecker checker) { super(delegated); this.checker = checker; if (req != null) { this.filter = req.getFilterPushDown(); this.filterCodeSystem = GTUtil.wrap(getInfo().codeSystem.getComparator()); this.oneTuple = new IEvaluatableTuple() { @Override public Object getValue(TblColRef col) { return next.get(col.getColumnDesc().getZeroBasedIndex()); } }; if (!TupleFilter.isEvaluableRecursively(filter)) throw new IllegalArgumentException(); } }