@Nullable static ColumnCapabilities getColumnCapabilities(ColumnSelector index, String columnName) { ColumnHolder columnHolder = index.getColumnHolder(columnName); if (columnHolder == null) { return null; } return columnHolder.getCapabilities(); }
@Override public ColumnCapabilities getCapabilities(String column) { return input.getColumnHolder(column).getCapabilities(); }
private void initDimensionHandlers() { for (String dim : availableDimensions) { ColumnCapabilities capabilities = getColumnHolder(dim).getCapabilities(); DimensionHandler handler = DimensionHandlerUtils.getHandlerFromCapabilities(dim, capabilities, null); dimensionHandlers.put(dim, handler); } } }
static boolean supportsSelectivityEstimation( Filter filter, String dimension, ColumnSelector columnSelector, BitmapIndexSelector indexSelector ) { if (filter.supportsBitmapIndex(indexSelector)) { final ColumnHolder columnHolder = columnSelector.getColumnHolder(dimension); if (columnHolder != null) { return !columnHolder.getCapabilities().hasMultipleValues(); } } return false; }
@Override @Nullable public Comparable getMinValue(String dimension) { ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder != null && columnHolder.getCapabilities().hasBitmapIndexes()) { BitmapIndex bitmap = columnHolder.getBitmapIndex(); return bitmap.getCardinality() > 0 ? bitmap.getValue(0) : null; } return null; }
dimension, createDimensionSchema( columnHolder.getCapabilities().getType(), dimension, dimensionHandler.getMultivalueHandling(), columnHolder.getCapabilities().hasBitmapIndexes()
@Override public String getColumnTypeName(String columnName) { final ColumnHolder columnHolder = index.getColumnHolder(columnName); try (final BaseColumn col = columnHolder.getColumn()) { if (col instanceof ComplexColumn) { return ((ComplexColumn) col).getTypeName(); } else { return columnHolder.getCapabilities().getType().toString(); } } catch (IOException e) { throw new UncheckedIOException(e); } }
@Override @Nullable public Comparable getMaxValue(String dimension) { ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder != null && columnHolder.getCapabilities().hasBitmapIndexes()) { BitmapIndex bitmap = columnHolder.getBitmapIndex(); return bitmap.getCardinality() > 0 ? bitmap.getValue(bitmap.getCardinality() - 1) : null; } return null; }
if (columnHolder == null || !columnHolder.getCapabilities().isFilterable()) { } else if (columnHolder.getCapabilities().hasBitmapIndexes()) { return columnHolder.getBitmapIndex(); } else {
@Override public boolean hasMultipleValues(final String dimension) { if (isVirtualColumn(dimension)) { return virtualColumns.getVirtualColumn(dimension).capabilities(dimension).hasMultipleValues(); } final ColumnHolder columnHolder = index.getColumnHolder(dimension); return columnHolder != null && columnHolder.getCapabilities().hasMultipleValues(); }
@Override public String getMetricType(String metric) { final ColumnHolder columnHolder = input.getColumnHolder(metric); final ValueType type = columnHolder.getCapabilities().getType(); switch (type) { case FLOAT: return "float"; case LONG: return "long"; case DOUBLE: return "double"; case COMPLEX: { try (ComplexColumn complexColumn = (ComplexColumn) columnHolder.getColumn()) { return complexColumn.getTypeName(); } } default: throw new ISE("Unknown type[%s]", type); } }
@Override public ImmutableRTree getSpatialIndex(String dimension) { if (isVirtualColumn(dimension)) { return ImmutableRTree.empty(); } final ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder == null || !columnHolder.getCapabilities().hasSpatialIndexes()) { return ImmutableRTree.empty(); } return columnHolder.getSpatialIndex().getRTree(); }
@Override public ImmutableBitmap getBitmapIndex(String dimension, String value) { if (isVirtualColumn(dimension)) { // Virtual columns don't have dictionaries or indexes. return null; } final ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder == null || !columnHolder.getCapabilities().isFilterable()) { if (NullHandling.isNullOrEquivalent(value)) { return bitmapFactory.complement(bitmapFactory.makeEmptyImmutableBitmap(), getNumRows()); } else { return bitmapFactory.makeEmptyImmutableBitmap(); } } if (!columnHolder.getCapabilities().hasBitmapIndexes()) { return null; } final BitmapIndex bitmapIndex = columnHolder.getBitmapIndex(); return bitmapIndex.getBitmap(bitmapIndex.getIndex(value)); }
final ColumnHolder columnHolder = index == null ? null : index.getColumnHolder(columnName); final ColumnCapabilities capabilities = columnHolder != null ? columnHolder.getCapabilities() : storageAdapter.getColumnCapabilities(columnName);
ValueType type = columnHolder.getCapabilities().getType(); if (type.isNumeric()) { return type.makeNumericWrappingDimensionSelector(makeColumnValueSelector(dimension), extractionFn);
for (String dim : oldIndex.getAvailableDimensions()) { dimOrder.add(dim); oldCapabilities.put(dim, (ColumnCapabilitiesImpl) oldIndex.getColumnHolder(dim).getCapabilities());
@Nullable static ColumnCapabilities getColumnCapabilities(ColumnSelector index, String columnName) { ColumnHolder columnHolder = index.getColumnHolder(columnName); if (columnHolder == null) { return null; } return columnHolder.getCapabilities(); }
private void initDimensionHandlers() { for (String dim : availableDimensions) { ColumnCapabilities capabilities = getColumnHolder(dim).getCapabilities(); DimensionHandler handler = DimensionHandlerUtils.getHandlerFromCapabilities(dim, capabilities, null); dimensionHandlers.put(dim, handler); } } }
@Override @Nullable public Comparable getMinValue(String dimension) { ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder != null && columnHolder.getCapabilities().hasBitmapIndexes()) { BitmapIndex bitmap = columnHolder.getBitmapIndex(); return bitmap.getCardinality() > 0 ? bitmap.getValue(0) : null; } return null; }
@Override public boolean hasMultipleValues(final String dimension) { if (isVirtualColumn(dimension)) { return virtualColumns.getVirtualColumn(dimension).capabilities(dimension).hasMultipleValues(); } final ColumnHolder columnHolder = index.getColumnHolder(dimension); return columnHolder != null && columnHolder.getCapabilities().hasMultipleValues(); }