@Override public Interval getInterval() { return index.getDataInterval(); }
public QueryableIndexIndexableAdapter(QueryableIndex input) { this.input = input; numRows = input.getNumRows(); availableDimensions = ImmutableList.copyOf(input.getAvailableDimensions()); this.metadata = input.getMetadata(); }
@Override public ColumnCapabilities getCapabilities(String column) { return input.getColumnHolder(column).getCapabilities(); }
@Override public Iterable<String> getAvailableMetrics() { HashSet<String> columnNames = Sets.newHashSet(index.getColumnNames()); return Sets.difference(columnNames, Sets.newHashSet(index.getAvailableDimensions())); }
private List<String> getColumnsToInclude(final QueryableIndex index) { final Set<String> columnNames = Sets.newLinkedHashSet(columnNamesFromCli); // Empty columnNames => include all columns. if (columnNames.isEmpty()) { columnNames.add(ColumnHolder.TIME_COLUMN_NAME); Iterables.addAll(columnNames, index.getColumnNames()); } else { // Remove any provided columns that do not exist in this segment. for (String columnName : ImmutableList.copyOf(columnNames)) { if (index.getColumnHolder(columnName) == null) { columnNames.remove(columnName); } } } return ImmutableList.copyOf(columnNames); }
@Test public void testPersist() throws Exception { final long timestamp = System.currentTimeMillis(); IncrementalIndex toPersist = IncrementalIndexTest.createIndex(null); IncrementalIndexTest.populateIndex(timestamp, toPersist); final File tempDir = temporaryFolder.newFolder(); QueryableIndex index = closer.closeLater( indexIO.loadIndex(indexMerger.persist(toPersist, tempDir, indexSpec, null)) ); Assert.assertEquals(2, index.getColumnHolder(ColumnHolder.TIME_COLUMN_NAME).getLength()); Assert.assertEquals(Arrays.asList("dim1", "dim2"), Lists.newArrayList(index.getAvailableDimensions())); Assert.assertEquals(3, index.getColumnNames().size()); assertDimCompression(index, indexSpec.getDimensionCompression()); Assert.assertArrayEquals( IncrementalIndexTest.getDefaultCombiningAggregatorFactories(), index.getMetadata().getAggregators() ); Assert.assertEquals( Granularities.NONE, index.getMetadata().getQueryGranularity() ); }
Assert.assertEquals(2, index1.getColumnHolder(ColumnHolder.TIME_COLUMN_NAME).getLength()); Assert.assertEquals(Arrays.asList("dim1", "dim2"), Lists.newArrayList(index1.getAvailableDimensions())); Assert.assertEquals(3, index1.getColumnNames().size()); Assert.assertEquals(2, merged.getColumnHolder(ColumnHolder.TIME_COLUMN_NAME).getLength()); Assert.assertEquals(Arrays.asList("dim1", "dim2"), Lists.newArrayList(merged.getAvailableDimensions())); Assert.assertEquals(3, merged.getColumnNames().size());
Assert.assertEquals("getDimensionNames", 0, Iterables.size(emptyQueryableIndex.getAvailableDimensions())); Assert.assertEquals("getMetricNames", 0, emptyQueryableIndex.getColumnNames().size()); Assert.assertEquals("getDataInterval", Intervals.of("2012-08-01/P3D"), emptyQueryableIndex.getDataInterval()); Assert.assertEquals( "getReadOnlyTimestamps", 0, emptyQueryableIndex.getColumnHolder(ColumnHolder.TIME_COLUMN_NAME).getLength() );
@Override public int getNumRows() { return index.getNumRows(); }
try { QueryableIndex oldIndex = segment.asQueryableIndex(); for (String dim : oldIndex.getAvailableDimensions()) { dimOrder.add(dim); oldCapabilities.put(dim, (ColumnCapabilitiesImpl) oldIndex.getColumnHolder(dim).getCapabilities());
final BitmapFactory bitmapFactory = index.getBitmapFactoryForDimensions(); final ImmutableBitmap baseFilter; if (filter == null) { } else { final BitmapIndexSelector selector = new ColumnSelectorBitmapIndexSelector( index.getBitmapFactoryForDimensions(), VirtualColumns.EMPTY, index if (!interval.contains(segment.getDataInterval())) { final MutableBitmap timeBitmap = bitmapFactory.makeEmptyMutableBitmap(); final ColumnHolder timeColumnHolder = index.getColumnHolder(ColumnHolder.TIME_COLUMN_NAME); try (final NumericColumn timeValues = (NumericColumn) timeColumnHolder.getColumn()) {
@Override public void close() { // this is kinda nasty index.close(); } }
final ColumnHolder columnHolder = index.getColumnHolder("d"); ), ImmutableMultiset.copyOf( IntStream.range(0, index.getNumRows()) .mapToObj(rowNumber -> getRow(dictionaryColumn, rowNumber)) for (int i = 0; i < index.getNumRows(); i++) { final List<String> row = getRow(dictionaryColumn, i); if (row.isEmpty() || row.stream().anyMatch(NullHandling::isNullOrEquivalent)) {
@Override public Metadata getMetadata() { return index.getMetadata(); } }
index.getBitmapFactoryForDimensions(), VirtualColumns.EMPTY, index index.getAvailableDimensions(), query.getDimensions() );
index.getBitmapFactoryForDimensions(), virtualColumns, index ); final int totalRows = index.getNumRows();
@Test public void testPersistWithSegmentMetadata() throws IOException { File outDir = Files.createTempDir(); QueryableIndex index = null; try { outDir = Files.createTempDir(); index = indexIO.loadIndex(indexMerger.persist(toPersist, outDir, INDEX_SPEC, null)); Assert.assertEquals("value", index.getMetadata().get("key")); } finally { if (index != null) { index.close(); } if (outDir != null) { FileUtils.deleteDirectory(outDir); } } }
@Override public Indexed<String> getAvailableDimensions() { return index.getAvailableDimensions(); }
public SearchQueryDecisionHelper getDecisionHelper(QueryableIndex index) { final BitmapFactory bitmapFactory = index.getBitmapFactoryForDimensions(); if (bitmapFactory.getClass().equals(ConciseBitmapFactory.class)) { return ConciseBitmapDecisionHelper.instance(); } else if (bitmapFactory.getClass().equals(RoaringBitmapFactory.class)) { return RoaringBitmapDecisionHelper.instance(); } else { throw new IAE("Unknown bitmap type[%s]", bitmapFactory.getClass().getCanonicalName()); } }
@Override public List<String> getMetricNames() { final Set<String> columns = Sets.newLinkedHashSet(input.getColumnNames()); final HashSet<String> dimensions = Sets.newHashSet(getDimensionNames()); return ImmutableList.copyOf(Sets.difference(columns, dimensions)); }