public static ImmutableBitSet valueOf(int... values) { BitSet set = new BitSet(); for (int i : values) set.set(i); return new ImmutableBitSet(set); }
private static ImmutableBitSet setOf(int... values) { BitSet set = new BitSet(); for (int i : values) set.set(i); return new ImmutableBitSet(set); } }
public static final Pair<ImmutableBitSet, ImmutableBitSet> getDimensionAndMetricColumnBitSet(final long cuboidId, final int measureCount) { int cardinality = Long.bitCount(cuboidId); BitSet dimension = new BitSet(); dimension.set(0, cardinality); BitSet metrics = new BitSet(); metrics.set(cardinality, cardinality + measureCount); return Pair.newPair(new ImmutableBitSet(dimension), new ImmutableBitSet(metrics)); }
public ImmutableBitSet selectColumnBlocks(ImmutableBitSet columns) { if (columns == null) columns = colAll; BitSet result = new BitSet(); for (int i = 0; i < colBlocks.length; i++) { ImmutableBitSet cb = colBlocks[i]; if (cb.intersects(columns)) { result.set(i); } } return new ImmutableBitSet(result); }
public ImmutableBitSet makeGridTableColumns(Collection<? extends FunctionDesc> metrics) { BitSet result = new BitSet(); for (FunctionDesc metric : metrics) { int idx = getIndexOf(metric); if (idx < 0) throw new IllegalStateException(metric + " not found in " + this); result.set(idx); } return new ImmutableBitSet(result); }
public ImmutableBitSet or(ImmutableBitSet another) { BitSet mutable = mutable(); mutable.or(another.set); return new ImmutableBitSet(mutable); }
public ImmutableBitSet makeGridTableColumns(Set<TblColRef> dimensions) { BitSet result = new BitSet(); for (TblColRef dim : dimensions) { int idx = getIndexOf(dim); if (idx >= 0) result.set(idx); } return new ImmutableBitSet(result); }
public ImmutableBitSet set(int bitIndex, boolean value) { if (set.get(bitIndex) == value) { return this; } else { BitSet mutable = mutable(); mutable.set(bitIndex, value); return new ImmutableBitSet(mutable); } }
private void init() { dynGtDataTypes = Lists.newArrayList(); dynGtColBlocks = Lists.newArrayList(); dynDim2gt = Maps.newHashMap(); dynMetrics2gt = Maps.newHashMap(); int gtColIdx = super.getColumnCount(); BitSet rtColBlock = new BitSet(); // dynamic dimensions for (TblColRef rtDim : dynDims) { dynDim2gt.put(rtDim, gtColIdx); dynGtDataTypes.add(rtDim.getType()); rtColBlock.set(gtColIdx); gtColIdx++; } dynamicDims = new ImmutableBitSet(rtColBlock); // dynamic metrics for (DynamicFunctionDesc rtFunc : dynFuncs) { dynMetrics2gt.put(rtFunc, gtColIdx); dynGtDataTypes.add(rtFunc.getReturnDataType()); rtColBlock.set(gtColIdx); gtColIdx++; } dynGtColBlocks.add(new ImmutableBitSet(rtColBlock)); }
public GTScanRequest createGTScanRequest() { if (aggrGroupBy == null) { aggrGroupBy = new ImmutableBitSet(new BitSet()); aggrMetrics = new ImmutableBitSet(new BitSet()); rtAggrMetrics = new ImmutableBitSet(new BitSet()); dynamicColumns = new ImmutableBitSet(new BitSet());
public static ImmutableBitSet setOf(int... values) { BitSet set = new BitSet(); for (int i : values) set.set(i); return new ImmutableBitSet(set); } }
private ImmutableBitSet collectColumnsInFilter(TupleFilter filter) { Set<TblColRef> columnsInFilter = new HashSet<>(); TupleFilter.collectColumns(filter, columnsInFilter); BitSet result = new BitSet(); for (TblColRef col : columnsInFilter) result.set(col.getColumnDesc().getZeroBasedIndex()); return new ImmutableBitSet(result); }
public static ImmutableBitSet setOf(int... values) { BitSet set = new BitSet(); for (int i : values) set.set(i); return new ImmutableBitSet(set); } }
public ImmutableBitSet andNot(ImmutableBitSet another) { BitSet mutable = mutable(); mutable.andNot(another.set); return new ImmutableBitSet(mutable); }
@Override public ImmutableBitSet deserialize(ByteBuffer in) { BitSet bitSet = BitSet.valueOf(BytesUtil.readByteArray(in)); return new ImmutableBitSet(bitSet); } };
private void initVariables(Long cuboidId) { rowKeyEncoder = AbstractRowKeyEncoder.createInstance(cubeSegment, Cuboid.findForMandatory(cubeDesc, cuboidId)); keyBuf = rowKeyEncoder.createBuf(); dimensions = Long.bitCount(cuboidId); measureColumns = new ImmutableBitSet(dimensions, dimensions + measureCount); } }
private ImmutableBitSet getMetricsColumns(GTRecord record) { // metrics columns always come after dimension columns if (lastCuboidColumnCount == record.getInfo().getColumnCount()) return lastMetricsColumns; int to = record.getInfo().getColumnCount(); int from = to - reuseMetricsArray.length; lastCuboidColumnCount = record.getInfo().getColumnCount(); lastMetricsColumns = new ImmutableBitSet(from, to); return lastMetricsColumns; } }
private ImmutableBitSet getMetricsColumns(GTRecord record) { // metrics columns always come after dimension columns if (lastCuboidColumnCount == record.getInfo().getColumnCount()) return lastMetricsColumns; int to = record.getInfo().getColumnCount(); int from = to - reuseMetricsArray.length; lastCuboidColumnCount = record.getInfo().getColumnCount(); lastMetricsColumns = new ImmutableBitSet(from, to); return lastMetricsColumns; } }
@Test public void testImmutableBitSet() { ImmutableBitSet x = new ImmutableBitSet(10, 100); ImmutableBitSet.serializer.serialize(x, buffer); buffer.flip(); ImmutableBitSet sx = ImmutableBitSet.serializer.deserialize(buffer); for (int i = 0; i < 10; i++) { Assert.assertFalse(sx.get(i)); } for (int i = 10; i < 100; i++) { Assert.assertTrue(sx.get(i)); } }
@Test public void testAggregationCacheSpill() throws IOException { IGTScanner inputScanner = new IGTScanner() { @Override public GTInfo getInfo() { return INFO; } @Override public void close() throws IOException { } @Override public Iterator<GTRecord> iterator() { return TEST_DATA.iterator(); } }; GTScanRequest scanRequest = new GTScanRequestBuilder().setInfo(INFO).setRanges(null).setDimensions(new ImmutableBitSet(0, 3)).setAggrGroupBy(new ImmutableBitSet(0, 3)).setAggrMetrics(new ImmutableBitSet(3, 6)).setAggrMetricsFuncs(new String[] { "SUM", "SUM", "COUNT_DISTINCT" }).setFilterPushDown(null).setAggCacheMemThreshold(0.5).createGTScanRequest(); GTAggregateScanner scanner = new GTAggregateScanner(inputScanner, scanRequest); int count = 0; for (GTRecord record : scanner) { assertNotNull(record); Object[] returnRecord = record.getValues(); assertEquals(20, ((Long) returnRecord[3]).longValue()); assertEquals(21, ((BigDecimal) returnRecord[4]).longValue()); count++; //System.out.println(record); } assertEquals(DATA_CARDINALITY, count); scanner.close(); }