public ImmutableBitSet set(int bitIndex) { return set(bitIndex, true); }
public static final Pair<ImmutableBitSet, ImmutableBitSet> getDimensionAndMetricColumnBitSet(final long baseCuboidId, final long childCuboidId, final int measureCount) { final Pair<ImmutableBitSet, ImmutableBitSet> parentDimensionAndMetricColumnBitSet = getDimensionAndMetricColumnBitSet(baseCuboidId, measureCount); ImmutableBitSet parentDimensions = parentDimensionAndMetricColumnBitSet.getFirst(); ImmutableBitSet measureColumns = parentDimensionAndMetricColumnBitSet.getSecond(); ImmutableBitSet childDimensions = parentDimensions; long mask = Long.highestOneBit(baseCuboidId); long parentCuboidIdActualLength = (long)Long.SIZE - Long.numberOfLeadingZeros(baseCuboidId); int index = 0; for (int i = 0; i < parentCuboidIdActualLength; i++) { if ((mask & baseCuboidId) > 0) { if ((mask & childCuboidId) == 0) { // this dim will be aggregated childDimensions = childDimensions.set(index, false); } index++; } mask = mask >> 1; } return Pair.newPair(childDimensions, measureColumns); } }
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()); } } } }
private IGTScanner getGTScannerInternal(final GTScanRequest scanRequest) throws IOException { final ImmutableBitSet selectedColBlocks = scanRequest.getSelectedColBlocks().set(0);
final ImmutableBitSet selectedColBlocks = scanRequest.getSelectedColBlocks().set(0);
public ImmutableBitSet set(int bitIndex) { return set(bitIndex, true); }
public static final Pair<ImmutableBitSet, ImmutableBitSet> getDimensionAndMetricColumnBitSet(final long baseCuboidId, final long childCuboidId, final int measureCount) { final Pair<ImmutableBitSet, ImmutableBitSet> parentDimensionAndMetricColumnBitSet = getDimensionAndMetricColumnBitSet(baseCuboidId, measureCount); ImmutableBitSet parentDimensions = parentDimensionAndMetricColumnBitSet.getFirst(); ImmutableBitSet measureColumns = parentDimensionAndMetricColumnBitSet.getSecond(); ImmutableBitSet childDimensions = parentDimensions; long mask = Long.highestOneBit(baseCuboidId); long parentCuboidIdActualLength = (long)Long.SIZE - Long.numberOfLeadingZeros(baseCuboidId); int index = 0; for (int i = 0; i < parentCuboidIdActualLength; i++) { if ((mask & baseCuboidId) > 0) { if ((mask & childCuboidId) == 0) { // this dim will be aggregated childDimensions = childDimensions.set(index, false); } index++; } mask = mask >> 1; } return Pair.newPair(childDimensions, measureColumns); } }
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()); } } } }
private IGTScanner getGTScannerInternal(final GTScanRequest scanRequest) throws IOException { final ImmutableBitSet selectedColBlocks = scanRequest.getSelectedColBlocks().set(0);
final ImmutableBitSet selectedColBlocks = scanRequest.getSelectedColBlocks().set(0);