public static byte[] serializeGTFilter(TupleFilter gtFilter, GTInfo info) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); return TupleFilterSerializer.serialize(gtFilter, filterCodeSystem); }
public static TupleFilter deserializeGTFilter(byte[] bytes, GTInfo info) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); return TupleFilterSerializer.deserialize(bytes, filterCodeSystem); }
public boolean satisfyNone() { if (valueSet != null) { return valueSet.isEmpty(); } else if (begin.array() != null && end.array() != null) { return gtInfo.getCodeSystem().getComparator().compare(begin, end) > 0; } else { return false; } }
private int compareToInternal(GTRecord o, ImmutableBitSet participateCols) { assert this.info == o.info; // reference equal for performance IGTComparator comparator = info.codeSystem.getComparator(); int comp = 0; for (int i = 0; i < participateCols.trueBitCount(); i++) { int c = participateCols.trueBitAt(i); comp = comparator.compare(cols[c], o.cols[c]); if (comp != 0) return comp; } return comp; }
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(); } }
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); }
protected GTFunctionScanner(IGTScanner rawScanner, GTScanRequest req) { this.rawScanner = rawScanner; this.tupleExpressionMap = req.getTupleExpressionMap(); this.rtAggrMetrics = req.getRtAggrMetrics(); this.oneTuple = new IEvaluatableTuple() { @Override public Object getValue(TblColRef col) { int idx = col.getColumnDesc().getZeroBasedIndex(); return rtAggrMetrics.get(idx) ? DecimalUtil.toBigDecimal(next.getValue(idx)) : next.get(idx); } }; this.filterCodeSystem = GTUtil.wrap(getInfo().codeSystem.getComparator()); }
private static TupleExpression convertExpression(TupleExpression rootExpression, final GTInfo info, final CuboidToGridTableMapping mapping, // final Map<TblColRef, FunctionDesc> innerFuncMap, final boolean encodeConstants, final Set<TblColRef> unevaluatableColumnCollector) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); final TupleExpressionSerializer.Decorator decorator = new TupleExpressionSerializer.Decorator() { @Override public TupleFilter convertInnerFilter(TupleFilter filter) { return convertFilter(filter, info, mapping.getDim2gt(), encodeConstants, unevaluatableColumnCollector); } @Override public TupleExpression convertInnerExpression(TupleExpression expression) { return convertFilterColumnsAndConstants(expression, info, mapping, innerFuncMap, unevaluatableColumnCollector); } @Override public TblColRef mapCol(TblColRef col) { int gtColIdx = mapping.getIndexOf(col); if (gtColIdx < 0 && innerFuncMap.get(col) != null) { gtColIdx = mapping.getIndexOf(innerFuncMap.get(col)); } return info.colRef(gtColIdx); } }; byte[] bytes = TupleExpressionSerializer.serialize(rootExpression, decorator, filterCodeSystem); return TupleExpressionSerializer.deserialize(bytes, filterCodeSystem); }
IGTComparator comp = gtInfo.getCodeSystem().getComparator();
/** * Construct GTScanRangePlanner with incomplete information. For UT only. */ public CubeScanRangePlanner(GTInfo info, TblColRef gtPartitionCol, TupleFilter gtFilter) { this.maxScanRanges = KylinConfig.getInstanceFromEnv().getQueryStorageVisitScanRangeMax(); this.maxFuzzyKeysPerSplit = KylinConfig.getInstanceFromEnv().getQueryScanFuzzyKeyMax(); this.maxFuzzyKeys = maxFuzzyKeysPerSplit * KylinConfig.getInstanceFromEnv().getQueryScanFuzzyKeySplitMax(); this.gtInfo = info; IGTComparator comp = gtInfo.getCodeSystem().getComparator(); //start key GTRecord compare to start key GTRecord this.rangeStartComparator = RecordComparators.getRangeStartComparator(comp); //stop key GTRecord compare to stop key GTRecord this.rangeEndComparator = RecordComparators.getRangeEndComparator(comp); //start key GTRecord compare to stop key GTRecord this.rangeStartEndComparator = RecordComparators.getRangeStartEndComparator(comp); this.gtFilter = gtFilter; }
BytesUtil.writeVInt(c, out); BytesUtil.writeByteArray(TupleExpressionSerializer.serialize(tupleExpr, GTUtil.wrap(value.info.codeSystem.getComparator())), out);
int sC = BytesUtil.readVInt(in); TupleExpression sTupleExpr = TupleExpressionSerializer.deserialize(BytesUtil.readByteArray(in), GTUtil.wrap(sInfo.codeSystem.getComparator())); sTupleExpressionMap.put(sC, sTupleExpr);
public static byte[] serializeGTFilter(TupleFilter gtFilter, GTInfo info) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); return TupleFilterSerializer.serialize(gtFilter, filterCodeSystem); }
public static TupleFilter deserializeGTFilter(byte[] bytes, GTInfo info) { IFilterCodeSystem<ByteArray> filterCodeSystem = wrap(info.codeSystem.getComparator()); return TupleFilterSerializer.deserialize(bytes, filterCodeSystem); }
public boolean satisfyNone() { if (valueSet != null) { return valueSet.isEmpty(); } else if (begin.array() != null && end.array() != null) { return gtInfo.getCodeSystem().getComparator().compare(begin, end) > 0; } else { return false; } }
private int compareToInternal(GTRecord o, ImmutableBitSet participateCols) { assert this.info == o.info; // reference equal for performance IGTComparator comparator = info.codeSystem.getComparator(); int comp = 0; for (int i = 0; i < participateCols.trueBitCount(); i++) { int c = participateCols.trueBitAt(i); comp = comparator.compare(cols[c], o.cols[c]); if (comp != 0) return comp; } return comp; }
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(); } }
protected GTFunctionScanner(IGTScanner rawScanner, GTScanRequest req) { this.rawScanner = rawScanner; this.tupleExpressionMap = req.getTupleExpressionMap(); this.rtAggrMetrics = req.getRtAggrMetrics(); this.oneTuple = new IEvaluatableTuple() { @Override public Object getValue(TblColRef col) { int idx = col.getColumnDesc().getZeroBasedIndex(); return rtAggrMetrics.get(idx) ? DecimalUtil.toBigDecimal(next.getValue(idx)) : next.get(idx); } }; this.filterCodeSystem = GTUtil.wrap(getInfo().codeSystem.getComparator()); }
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); }
/** * Construct GTScanRangePlanner with incomplete information. For UT only. */ public CubeScanRangePlanner(GTInfo info, TblColRef gtPartitionCol, TupleFilter gtFilter) { this.maxScanRanges = KylinConfig.getInstanceFromEnv().getQueryStorageVisitScanRangeMax(); this.maxFuzzyKeysPerSplit = KylinConfig.getInstanceFromEnv().getQueryScanFuzzyKeyMax(); this.maxFuzzyKeys = maxFuzzyKeysPerSplit * KylinConfig.getInstanceFromEnv().getQueryScanFuzzyKeySplitMax(); this.gtInfo = info; IGTComparator comp = gtInfo.getCodeSystem().getComparator(); //start key GTRecord compare to start key GTRecord this.rangeStartComparator = RecordComparators.getRangeStartComparator(comp); //stop key GTRecord compare to stop key GTRecord this.rangeEndComparator = RecordComparators.getRangeEndComparator(comp); //start key GTRecord compare to stop key GTRecord this.rangeStartEndComparator = RecordComparators.getRangeStartEndComparator(comp); this.gtFilter = gtFilter; }