@Override public Interval getDataInterval() { return input.getDataInterval(); }
@Override public Interval getInterval() { return index.getDataInterval(); }
@Override public Interval getDataInterval() { return index.getDataInterval(); }
final Interval shouldBeSmaller = queryableIndices.get(i).lhs.getDataInterval(); final Interval shouldBeLarger = queryableIndices.get(i + 1).lhs.getDataInterval(); Preconditions.checkState( intervalComparator.compare(shouldBeSmaller, shouldBeLarger) <= 0,
index.getDataInterval().withChronology(ISOChronology.getInstanceUTC()), VirtualColumns.EMPTY, Granularities.ALL,
private double compute(final Function<ColumnSelectorFactory, BufferAggregator> aggregatorFactory) { final QueryableIndexStorageAdapter adapter = new QueryableIndexStorageAdapter(index); final Sequence<Cursor> cursors = adapter.makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.ALL, false, null ); final List<Double> results = cursors .map(cursor -> { final BufferAggregator bufferAggregator = aggregatorFactory.apply(cursor.getColumnSelectorFactory()); bufferAggregator.init(aggregationBuffer, 0); while (!cursor.isDone()) { bufferAggregator.aggregate(aggregationBuffer, 0); cursor.advance(); } final Double dbl = (Double) bufferAggregator.get(aggregationBuffer, 0); bufferAggregator.close(); return dbl; }) .toList(); return Iterables.getOnlyElement(results); }
final SegmentMetadataQuery query = new SegmentMetadataQuery( new TableDataSource("dataSource"), new SpecificSegmentSpec(new SegmentDescriptor(index.getDataInterval(), "0", 0)), new ListColumnIncluderator(getColumnsToInclude(index)), false,
@Benchmark public void timeFloorUsingCursor(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.HOUR, false, null ); final List<Long> results = cursors .map(cursor -> { long count = 0L; while (!cursor.isDone()) { count++; cursor.advance(); } return count; }) .toList(); long count = 0L; for (Long result : results) { count += result; } blackhole.consume(count); }
@Benchmark public void arithmeticOnLong(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.create( ImmutableList.of( new ExpressionVirtualColumn( "v", "n + 1", ValueType.LONG, TestExprMacroTable.INSTANCE ) ) ), Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final ColumnValueSelector selector = cursor.getColumnSelectorFactory().makeColumnValueSelector("v"); consumeLong(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
@Benchmark public void timeFloorUsingExpression(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.create( ImmutableList.of( new ExpressionVirtualColumn( "v", "timestamp_floor(__time, 'PT1H')", ValueType.LONG, TestExprMacroTable.INSTANCE ) ) ), Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final ColumnValueSelector selector = cursor.getColumnSelectorFactory().makeColumnValueSelector("v"); consumeLong(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
@Benchmark public void strlenUsingExpressionAsLong(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.create( ImmutableList.of( new ExpressionVirtualColumn( "v", "strlen(s)", ValueType.STRING, TestExprMacroTable.INSTANCE ) ) ), Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final ColumnValueSelector selector = cursor.getColumnSelectorFactory().makeColumnValueSelector("v"); consumeLong(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
@Benchmark public void stringConcatAndCompareOnLong(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.create( ImmutableList.of( new ExpressionVirtualColumn( "v", "concat(n, ' is my favorite number') == '3 is my favorite number'", ValueType.LONG, TestExprMacroTable.INSTANCE ) ) ), Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final ColumnValueSelector selector = cursor.getColumnSelectorFactory().makeColumnValueSelector("v"); consumeLong(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
index.getDataInterval(), VirtualColumns.create( ImmutableList.of(
index.getDataInterval(), VirtualColumns.create( ImmutableList.of(
@Benchmark public void strlenUsingExtractionFn(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector(new ExtractionDimensionSpec("x", "v", StrlenExtractionFn.instance())); consumeDimension(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
@Benchmark public void timeFloorUsingExtractionFn(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector( new ExtractionDimensionSpec( ColumnHolder.TIME_COLUMN_NAME, "v", new TimeFormatExtractionFn(null, null, null, Granularities.HOUR, true) ) ); consumeDimension(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
@Benchmark public void timeFormatUsingExtractionFn(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector( new ExtractionDimensionSpec( ColumnHolder.TIME_COLUMN_NAME, "v", new TimeFormatExtractionFn("yyyy-MM-dd", null, null, null, false) ) ); consumeDimension(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
Assert.assertEquals("getDataInterval", Intervals.of("2012-08-01/P3D"), emptyQueryableIndex.getDataInterval()); Assert.assertEquals( "getReadOnlyTimestamps",
DataSegment.builder() .dataSource(DATASOURCE1) .interval(index1.getDataInterval()) .version("1") .shardSpec(new LinearShardSpec(0)) DataSegment.builder() .dataSource(DATASOURCE2) .interval(index2.getDataInterval()) .version("1") .shardSpec(new LinearShardSpec(0)) DataSegment.builder() .dataSource(FORBIDDEN_DATASOURCE) .interval(forbiddenIndex.getDataInterval()) .version("1") .shardSpec(new LinearShardSpec(0)) ).add(DataSegment.builder() .dataSource(DATASOURCE3) .interval(indexNumericDims.getDataInterval()) .version("1") .shardSpec(new LinearShardSpec(0))
DataSegment.builder() .dataSource(DATA_SOURCE) .interval(index.getDataInterval()) .version("1") .shardSpec(new LinearShardSpec(0))