@Override public Sequence<T> apply(DataSource singleSource) { return baseRunner.run( queryPlus.withQuery(query.withDataSource(singleSource)), responseContext ); } }
@Override public void dataSource(QueryType query) { setDimension(DruidMetrics.DATASOURCE, DataSourceUtil.getMetricName(query.getDataSource())); }
@Override public Sequence<T> run(QueryPlus<T> queryPlus, Map<String, Object> responseContext) { if (QueryContexts.isBySegment(queryPlus.getQuery())) { return baseRunner.run(queryPlus, responseContext); } return doRun(baseRunner, queryPlus, responseContext); }
public static <T> Iterable<T> runQuery(QueryRunnerFactory factory, QueryRunner runner, Query<T> query) { QueryToolChest toolChest = factory.getToolchest(); QueryRunner<T> theRunner = new FinalizeResultsQueryRunner<>( toolChest.mergeResults(toolChest.preMergeQueryDecoration(runner)), toolChest ); Sequence<T> queryResult = theRunner.run(QueryPlus.wrap(query), new HashMap<>()); return queryResult.toList(); }
@Override public Sequence run(QueryPlus queryPlus, Map responseContext) { Query realQuery = getRealQuery(queryPlus.getQuery()); return warehouse.getToolChest(realQuery).mergeResults(runner).run(queryPlus.withQuery(realQuery), responseContext); } };
private SearchQuery makeSearchQuery() { return Druids.newSearchQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnInterval) .query("a") .build(); }
private static <T> QueryRunner<T> makeQueryRunner(QueryRunnerFactory<T, Query<T>> factory, Segment adapter) { return new FinalizeResultsQueryRunner<>(factory.createRunner(adapter), factory.getToolchest()); } }
private Druids.SearchQueryBuilder testBuilder() { return Druids.newSearchQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnIntervalSpec); }
@Override public List<String> getNames() { return query.getDataSource().getNames(); }
private Query findInnerMostQuery(Query outerQuery) { Query query = outerQuery; while (query.getDataSource() instanceof QueryDataSource) { query = ((QueryDataSource) query.getDataSource()).getQuery(); } return query; }
private PerSegmentQueryOptimizationContext getOptimizationContext(Interval segmentInterval) { return new PerSegmentQueryOptimizationContext( new SegmentDescriptor(segmentInterval, "0", 0) ); } }
@Override public <T, QueryType extends Query<T>> QueryToolChest<T, QueryType> getToolChest(final QueryType query) { return conglomerate.findFactory(query).getToolchest(); } },
@Override public <T> QueryRunner<T> getQueryRunner(final Query<T> query) { // Calling getQueryRunnerForIntervals here works because there's only one segment per interval for RealtimePlumber. return texasRanger.getQueryRunnerForIntervals(query, query.getIntervals()); }
@Override public <T> QueryRunner<T> getQueryRunner(Query<T> query) { if (appenderator == null) { // Not yet initialized, no data yet, just return a noop runner. return new NoopQueryRunner<>(); } return (queryPlus, responseContext) -> queryPlus.run(appenderator, responseContext); }
@Override public Query withOverriddenContext(Map contextOverride) { return new TestQuery( getDataSource(), getQuerySegmentSpec(), isDescending(), BaseQuery.computeOverriddenContext(getContext(), contextOverride) ); } }
private QueryMetrics<? super Query<T>> acquireResponseMetrics() { if (queryMetrics == null) { queryMetrics = toolChest.makeMetrics(query); queryMetrics.server(host); } return queryMetrics; }
@Override public void queryType(QueryType query) { setDimension(DruidMetrics.TYPE, query.getType()); }
public QueryPlus<T> optimizeForSegment(PerSegmentQueryOptimizationContext optimizationContext) { return new QueryPlus<>(query.optimizeForSegment(optimizationContext), queryMetrics, identity); } }