public void merge(ColumnCapabilities other) { if (other == null) { return; } if (type == null) { type = other.getType(); } if (!type.equals(other.getType())) { throw new ISE("Cannot merge columns of type[%s] and [%s]", type, other.getType()); } this.dictionaryEncoded |= other.isDictionaryEncoded(); this.runLengthEncoded |= other.isRunLengthEncoded(); this.hasInvertedIndexes |= other.hasBitmapIndexes(); this.hasSpatialIndexes |= other.hasSpatialIndexes(); this.hasMultipleValues |= other.hasMultipleValues(); this.filterable &= other.isFilterable(); } }
private ColumnAnalysis analyzeNumericColumn( final ColumnCapabilities capabilities, final int length, final int sizePerRow ) { long size = 0; if (analyzingSize()) { if (capabilities.hasMultipleValues()) { return ColumnAnalysis.error("multi_value"); } size = ((long) length) * sizePerRow; } return new ColumnAnalysis( capabilities.getType().name(), capabilities.hasMultipleValues(), size, null, null, null, null ); }
public static DimensionHandler getHandlerFromCapabilities( String dimensionName, ColumnCapabilities capabilities, MultiValueHandling multiValueHandling ) { if (capabilities == null) { return new StringDimensionHandler(dimensionName, multiValueHandling, true); } multiValueHandling = multiValueHandling == null ? MultiValueHandling.ofDefault() : multiValueHandling; if (capabilities.getType() == ValueType.STRING) { if (!capabilities.isDictionaryEncoded()) { throw new IAE("String column must have dictionary encoding."); } return new StringDimensionHandler(dimensionName, multiValueHandling, capabilities.hasBitmapIndexes()); } if (capabilities.getType() == ValueType.LONG) { return new LongDimensionHandler(dimensionName); } if (capabilities.getType() == ValueType.FLOAT) { return new FloatDimensionHandler(dimensionName); } if (capabilities.getType() == ValueType.DOUBLE) { return new DoubleDimensionHandler(dimensionName); } // Return a StringDimensionHandler by default (null columns will be treated as String typed) return new StringDimensionHandler(dimensionName, multiValueHandling, true); }
@Override public SettableColumnValueSelector makeNewSettableColumnValueSelector() { return getCapabilities().getType().makeNewSettableColumnValueSelector(); } }
final ColumnCapabilities capabilities = columnSelectorFactory.getColumnCapabilities(column); if (capabilities != null && capabilities.getType() == ValueType.LONG) { && capabilities.getType() == ValueType.STRING && capabilities.isDictionaryEncoded()) {
Comparable max = null; if (!capabilities.hasBitmapIndexes()) { return ColumnAnalysis.error("string_no_bitmap"); capabilities.getType().name(), capabilities.hasMultipleValues(), size, analyzingCardinality() ? cardinality : 0,
@Override public DimensionMergerV9 makeMerger( IndexSpec indexSpec, SegmentWriteOutMedium segmentWriteOutMedium, ColumnCapabilities capabilities, ProgressIndicator progress, Closer closer ) { // Sanity-check capabilities. if (hasBitmapIndexes != capabilities.hasBitmapIndexes()) { throw new ISE( "capabilities.hasBitmapIndexes[%s] != this.hasBitmapIndexes[%s]", capabilities.hasBitmapIndexes(), hasBitmapIndexes ); } return new StringDimensionMergerV9(dimensionName, indexSpec, segmentWriteOutMedium, capabilities, progress, closer); } }
dimension, createDimensionSchema( columnHolder.getCapabilities().getType(), dimension, dimensionHandler.getMultivalueHandling(), columnHolder.getCapabilities().hasBitmapIndexes()
if (columnHolder == null || !columnHolder.getCapabilities().isFilterable()) { } else if (columnHolder.getCapabilities().hasBitmapIndexes()) { return columnHolder.getBitmapIndex(); } else {
@Override public void writeIndexes(@Nullable List<IntBuffer> segmentRowNumConversions) throws IOException if (!capabilities.hasBitmapIndexes()) { return; boolean hasSpatial = capabilities.hasSpatialIndexes(); if (hasSpatial) { spatialWriter = new ByteBufferWriter<>(
@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 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(); }
&& capabilities.getType() == ValueType.STRING && capabilities.isDictionaryEncoded()) {
public static DimensionHandler getHandlerFromCapabilities( String dimensionName, ColumnCapabilities capabilities, MultiValueHandling multiValueHandling ) { if (capabilities == null) { return new StringDimensionHandler(dimensionName, multiValueHandling, true); } multiValueHandling = multiValueHandling == null ? MultiValueHandling.ofDefault() : multiValueHandling; if (capabilities.getType() == ValueType.STRING) { if (!capabilities.isDictionaryEncoded()) { throw new IAE("String column must have dictionary encoding."); } return new StringDimensionHandler(dimensionName, multiValueHandling, capabilities.hasBitmapIndexes()); } if (capabilities.getType() == ValueType.LONG) { return new LongDimensionHandler(dimensionName); } if (capabilities.getType() == ValueType.FLOAT) { return new FloatDimensionHandler(dimensionName); } if (capabilities.getType() == ValueType.DOUBLE) { return new DoubleDimensionHandler(dimensionName); } // Return a StringDimensionHandler by default (null columns will be treated as String typed) return new StringDimensionHandler(dimensionName, multiValueHandling, true); }
Comparable max = null; if (!capabilities.hasBitmapIndexes()) { return ColumnAnalysis.error("string_no_bitmap"); capabilities.getType().name(), capabilities.hasMultipleValues(), size, analyzingCardinality() ? cardinality : 0,
capabilities.getType().name(), capabilities.hasMultipleValues(), size, cardinality,
@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 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)); }