@Override public QueryRunner apply(final Segment segment) { try { return makeStringSerdeQueryRunner( mapper, toolChest, factory.createRunner(segment) ); } catch (Exception ex) { throw Throwables.propagate(ex); } } }
private static <T> Sequence<T> executeQuery(final Injector injector, final QueryableIndex index, final Query<T> query) { final QueryRunnerFactoryConglomerate conglomerate = injector.getInstance(QueryRunnerFactoryConglomerate.class); final QueryRunnerFactory<T, Query<T>> factory = conglomerate.findFactory(query); final QueryRunner<T> runner = factory.createRunner(new QueryableIndexSegment(index, SegmentId.dummy("segment"))); return factory .getToolchest() .mergeResults(factory.mergeRunners(Execs.directExecutor(), ImmutableList.of(runner))) .run(QueryPlus.wrap(query), new HashMap<>()); }
private static <T> QueryRunner<T> makeQueryRunner(QueryRunnerFactory<T, Query<T>> factory, Segment adapter) { return new FinalizeResultsQueryRunner<>(factory.createRunner(adapter), factory.getToolchest()); } }
@Override public Sequence<ScanResultValue> run( QueryPlus<ScanResultValue> queryPlus, Map<String, Object> responseContext ) { // simulate results back from 2 historicals List<Sequence<ScanResultValue>> sequences = Lists.newArrayListWithExpectedSize(2); sequences.add(factory.createRunner(segment0).run(queryPlus, new HashMap<>())); sequences.add(factory.createRunner(segment1).run(queryPlus, new HashMap<>())); return new MergeSequence<>( queryPlus.getQuery().getResultOrdering(), Sequences.simple(sequences) ); } }
public static <T, QueryType extends Query<T>> QueryRunner<T> makeQueryRunner( QueryRunnerFactory<T, QueryType> factory, SegmentId segmentId, Segment adapter ) { return new FinalizeResultsQueryRunner<>( new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)), (QueryToolChest<T, Query<T>>) factory.getToolchest() ); }
public static <T> QueryRunner<T> makeTimeBoundaryQueryRunner(Segment adapter) { QueryRunnerFactory factory = new TimeBoundaryQueryRunnerFactory(QueryRunnerTestHelper.NOOP_QUERYWATCHER); return new FinalizeResultsQueryRunner<T>( factory.createRunner(adapter), factory.getToolchest() ); } }
@Override public Sequence<T> run(final QueryPlus<T> queryPlus, Map<String, Object> responseContext) { if (adapter.increment()) { try { final Sequence<T> baseSequence = factory.createRunner(adapter).run(queryPlus, responseContext); return Sequences.withBaggage(baseSequence, adapter.decrementOnceCloseable()); } catch (Throwable t) { try { adapter.decrement(); } catch (Exception e) { t.addSuppressed(e); } throw t; } } else { // Segment was closed before we had a chance to increment the reference count return new ReportTimelineMissingSegmentQueryRunner<T>(descriptor).run(queryPlus, responseContext); } } }
@Test public void testMergeRunnersWithLimit() { ScanQuery query = newBuilder().build(); List<ScanResultValue> results = factory .mergeRunners( Execs.directExecutor(), ImmutableList.of(factory.createRunner(segment0), factory.createRunner(segment1)) ) .run(QueryPlus.wrap(query), new HashMap<>()) .toList(); int totalCount = 0; for (ScanResultValue result : results) { System.out.println(((List) result.getEvents()).size()); totalCount += ((List) result.getEvents()).size(); } Assert.assertEquals( totalCount, limit != 0 ? Math.min(limit, V_0112.length + V_0113.length) : V_0112.length + V_0113.length ); }
public static <T, QueryType extends Query<T>> QueryRunner<T> makeQueryRunner( QueryRunnerFactory<T, QueryType> factory, SegmentId segmentId, Segment adapter ) { return new FinalizeResultsQueryRunner<>( new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)), (QueryToolChest<T, Query<T>>) factory.getToolchest() ); }
public static <T, QueryType extends Query<T>> QueryRunner<T> makeQueryRunner( QueryRunnerFactory<T, QueryType> factory, SegmentId segmentId, Segment adapter ) { return new FinalizeResultsQueryRunner<>( new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)), (QueryToolChest<T, Query<T>>) factory.getToolchest() ); }
private static <T, QueryType extends Query<T>> QueryRunner<T> makeQueryRunnerForSegment( QueryRunnerFactory<T, QueryType> factory, SegmentId segmentId, Segment adapter ) { return new FinalizeResultsQueryRunner<>( new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)), (QueryToolChest<T, Query<T>>) factory.getToolchest() ); }
public static <T, QueryType extends Query<T>> QueryRunner<T> makeQueryRunner( QueryRunnerFactory<T, QueryType> factory, SegmentId segmentId, Segment adapter ) { return new FinalizeResultsQueryRunner<>( new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)), (QueryToolChest<T, Query<T>>) factory.getToolchest() ); }
public static <T, QueryType extends Query<T>> QueryRunner<T> makeQueryRunner( QueryRunnerFactory<T, QueryType> factory, SegmentId segmentId, Segment adapter ) { return new FinalizeResultsQueryRunner<>( new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)), (QueryToolChest<T, Query<T>>) factory.getToolchest() ); }
public static <T> QueryRunner<T> makeTopNQueryRunner(Segment adapter, NonBlockingPool<ByteBuffer> pool) { QueryRunnerFactory factory = new TopNQueryRunnerFactory( pool, new TopNQueryQueryToolChest( topNConfig, QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); return new FinalizeResultsQueryRunner<T>( factory.createRunner(adapter), factory.getToolchest() ); }
public static <T> QueryRunner<T> makeSearchQueryRunner(Segment adapter) { final SearchQueryConfig config = new SearchQueryConfig(); QueryRunnerFactory factory = new SearchQueryRunnerFactory( new SearchStrategySelector(Suppliers.ofInstance(config)), new SearchQueryQueryToolChest( config, QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator() ), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); return new FinalizeResultsQueryRunner<T>( factory.createRunner(adapter), factory.getToolchest() ); }
public static <T, QueryType extends Query<T>> QueryRunner<T> makeQueryRunner( QueryRunnerFactory<T, QueryType> factory, SegmentId segmentId, Segment adapter, final String runnerName ) { return new FinalizeResultsQueryRunner<T>( new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)), (QueryToolChest<T, Query<T>>) factory.getToolchest() ) { @Override public String toString() { return runnerName; } }; }
public static <T> QueryRunner<T> makeTimeSeriesQueryRunner(Segment adapter) { QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); return new FinalizeResultsQueryRunner<T>( factory.createRunner(adapter), factory.getToolchest() ); }
@Override public Sequence<T> run(QueryPlus<T> queryPlus, Map<String, Object> responseContext) { Query<T> query = queryPlus.getQuery(); List<TimelineObjectHolder> segments = new ArrayList<>(); for (Interval interval : query.getIntervals()) { segments.addAll(timeline.lookup(interval)); } List<Sequence<T>> sequences = new ArrayList<>(); for (TimelineObjectHolder<String, Segment> holder : toolChest.filterSegments(query, segments)) { Segment segment = holder.getObject().getChunk(0).getObject(); QueryPlus queryPlusRunning = queryPlus.withQuerySegmentSpec( new SpecificSegmentSpec( new SegmentDescriptor( holder.getInterval(), holder.getVersion(), 0 ) ) ); sequences.add(factory.createRunner(segment).run(queryPlusRunning, responseContext)); } return new MergeSequence<>(query.getResultOrdering(), Sequences.simple(sequences)); } }
public static <T, QueryType extends Query<T>> List<T> runQuery( final QueryType query, final QueryRunnerFactory<T, QueryType> factory, final List<QueryableIndex> indexes ) { final Sequence<T> results = new FinalizeResultsQueryRunner<>( factory.getToolchest().mergeResults( factory.mergeRunners( Execs.directExecutor(), FunctionalIterable .create(indexes) .transform( index -> factory.createRunner(new QueryableIndexSegment(index, SegmentId.dummy("xxx"))) ) ) ), (QueryToolChest<T, Query<T>>) factory.getToolchest() ).run(QueryPlus.wrap(query), new HashMap<>()); return results.toList(); }
public static <T> QueryRunner<T> makeUnionQueryRunner( QueryRunnerFactory<T, Query<T>> factory, Segment adapter, final String runnerName ) { BySegmentQueryRunner<T> bySegmentQueryRunner = new BySegmentQueryRunner<>(segmentId, adapter.getDataInterval().getStart(), factory.createRunner(adapter)); final QueryRunner<T> runner = new FluentQueryRunnerBuilder<T>(factory.getToolchest()) .create(new UnionQueryRunner<>(bySegmentQueryRunner)) .mergeResults() .applyPostMergeDecoration(); return new QueryRunner<T>() { @Override public Sequence<T> run(QueryPlus<T> queryPlus, Map<String, Object> responseContext) { return runner.run(queryPlus, responseContext); } @Override public String toString() { return runnerName; } }; }