@Nullable @Override public <T extends Comparable<? super T>> CloseableIndexed<T> getDimValueLookup(String dimension) { final DimensionAccessor accessor = accessors.get(dimension); if (accessor == null) { return null; } final DimensionIndexer indexer = accessor.dimensionDesc.getIndexer(); return indexer.getSortedIndexedValues(); }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } IncrementalIndexRow that = (IncrementalIndexRow) o; if (timestamp != that.timestamp) { return false; } if (dims.length != that.dims.length) { return false; } for (int i = 0; i < dims.length; i++) { final DimensionIndexer indexer = dimensionDescsList.get(i).getIndexer(); if (!indexer.checkUnsortedEncodedKeyComponentsEqual(dims[i], that.dims[i])) { return false; } } return true; }
@Override public int hashCode() { int hash = (int) timestamp; for (int i = 0; i < dims.length; i++) { final DimensionIndexer indexer = dimensionDescsList.get(i).getIndexer(); hash = 31 * hash + indexer.getUnsortedEncodedKeyComponentHashCode(dims[i]); } return hash; } }
@Override public int getDimensionCardinality(String dimension) { if (dimension.equals(ColumnHolder.TIME_COLUMN_NAME)) { return Integer.MAX_VALUE; } IncrementalIndex.DimensionDesc desc = index.getDimension(dimension); if (desc == null) { return 0; } DimensionIndexer indexer = desc.getIndexer(); int cardinality = indexer.getCardinality(); return cardinality != DimensionSelector.CARDINALITY_UNKNOWN ? cardinality : Integer.MAX_VALUE; }
@Nullable @Override public <T extends Comparable<? super T>> CloseableIndexed<T> getDimValueLookup(String dimension) { final DimensionAccessor accessor = accessors.get(dimension); if (accessor == null) { return null; } final DimensionIndexer indexer = accessor.dimensionDesc.getIndexer(); return indexer.getSortedIndexedValues(); }
@Override public int hashCode() { int hash = (int) timestamp; for (int i = 0; i < dims.length; i++) { final DimensionIndexer indexer = dimensionDescsList.get(i).getIndexer(); hash = 31 * hash + indexer.getUnsortedEncodedKeyComponentHashCode(dims[i]); } return hash; } }
@Nullable @Override public Comparable getMaxValue(String column) { IncrementalIndex.DimensionDesc desc = index.getDimension(column); if (desc == null) { return null; } DimensionIndexer indexer = desc.getIndexer(); return indexer.getMaxValue(); }
public DimensionAccessor(IncrementalIndex.DimensionDesc dimensionDesc) { this.dimensionDesc = dimensionDesc; this.indexer = dimensionDesc.getIndexer(); if (dimensionDesc.getCapabilities().hasBitmapIndexes()) { this.invertedIndexes = new MutableBitmap[indexer.getCardinality() + 1]; } else { this.invertedIndexes = null; } } }
@Nullable @Override public Comparable getMinValue(String column) { IncrementalIndex.DimensionDesc desc = index.getDimension(column); if (desc == null) { return null; } DimensionIndexer indexer = desc.getIndexer(); return indexer.getMinValue(); }
DimensionIndexer indexer = desc.getIndexer(); Object dimsKey = null; try {
continue; final DimensionIndexer indexer = dimensionDesc.getIndexer(); Object rowVals = indexer.convertUnsortedEncodedKeyComponentToActualList(dim); theVals.put(dimensionName, rowVals);
.map(dim -> { ColumnValueSelector selectorWithUnsortedValues = columnSelectorFactory.makeColumnValueSelector(dim.getName()); return dim.getIndexer().convertUnsortedValuesToSorted(selectorWithUnsortedValues); }) .toArray(ColumnValueSelector[]::new);
final DimensionIndexer indexer = dimensionDescs.get(index).getIndexer(); retVal = indexer.compareUnsortedEncodedKeyComponents(lhsIdxs, rhsIdxs); ++index;
private DimensionSelector makeDimensionSelectorUndecorated(DimensionSpec dimensionSpec) { final String dimension = dimensionSpec.getDimension(); final ExtractionFn extractionFn = dimensionSpec.getExtractionFn(); if (dimension.equals(ColumnHolder.TIME_COLUMN_NAME)) { return new SingleScanTimeDimensionSelector(makeColumnValueSelector(dimension), extractionFn, descending); } final IncrementalIndex.DimensionDesc dimensionDesc = index.getDimension(dimensionSpec.getDimension()); if (dimensionDesc == null) { // not a dimension, column may be a metric ColumnCapabilities capabilities = getColumnCapabilities(dimension); if (capabilities == null) { return DimensionSelector.constant(null, extractionFn); } if (capabilities.getType().isNumeric()) { return capabilities.getType().makeNumericWrappingDimensionSelector( makeColumnValueSelector(dimension), extractionFn ); } // if we can't wrap the base column, just return a column of all nulls return DimensionSelector.constant(null, extractionFn); } else { final DimensionIndexer indexer = dimensionDesc.getIndexer(); return indexer.makeDimensionSelector(dimensionSpec, rowHolder, dimensionDesc); } }
@Override public BitmapValues getBitmapValues(String dimension, int index) { DimensionAccessor accessor = accessors.get(dimension); if (accessor == null) { return BitmapValues.EMPTY; } ColumnCapabilities capabilities = accessor.dimensionDesc.getCapabilities(); DimensionIndexer indexer = accessor.dimensionDesc.getIndexer(); if (!capabilities.hasBitmapIndexes()) { return BitmapValues.EMPTY; } final int id = (Integer) indexer.getUnsortedEncodedValueFromSorted(index); if (id < 0 || id >= indexer.getCardinality()) { return BitmapValues.EMPTY; } MutableBitmap bitmapIndex = accessor.invertedIndexes[id]; if (bitmapIndex == null) { return BitmapValues.EMPTY; } return new MutableBitmapValues(bitmapIndex); }
@Override public ColumnValueSelector<?> makeColumnValueSelector(String columnName) { if (virtualColumns.exists(columnName)) { return virtualColumns.makeColumnValueSelector(columnName, this); } if (columnName.equals(ColumnHolder.TIME_COLUMN_NAME)) { return rowHolder; } final Integer dimIndex = index.getDimensionIndex(columnName); if (dimIndex != null) { final IncrementalIndex.DimensionDesc dimensionDesc = index.getDimension(columnName); final DimensionIndexer indexer = dimensionDesc.getIndexer(); return indexer.makeColumnValueSelector(rowHolder, dimensionDesc); } return index.makeMetricColumnValueSelector(columnName, rowHolder); }
@Override public int getDimensionCardinality(String dimension) { if (dimension.equals(ColumnHolder.TIME_COLUMN_NAME)) { return Integer.MAX_VALUE; } IncrementalIndex.DimensionDesc desc = index.getDimension(dimension); if (desc == null) { return 0; } DimensionIndexer indexer = desc.getIndexer(); int cardinality = indexer.getCardinality(); return cardinality != DimensionSelector.CARDINALITY_UNKNOWN ? cardinality : Integer.MAX_VALUE; }
@Nullable @Override public Comparable getMaxValue(String column) { IncrementalIndex.DimensionDesc desc = index.getDimension(column); if (desc == null) { return null; } DimensionIndexer indexer = desc.getIndexer(); return indexer.getMaxValue(); }
public DimensionAccessor(IncrementalIndex.DimensionDesc dimensionDesc) { this.dimensionDesc = dimensionDesc; this.indexer = dimensionDesc.getIndexer(); if (dimensionDesc.getCapabilities().hasBitmapIndexes()) { this.invertedIndexes = new MutableBitmap[indexer.getCardinality() + 1]; } else { this.invertedIndexes = null; } } }
@Nullable @Override public Comparable getMinValue(String column) { IncrementalIndex.DimensionDesc desc = index.getDimension(column); if (desc == null) { return null; } DimensionIndexer indexer = desc.getIndexer(); return indexer.getMinValue(); }