public static <T> boolean isBySegment(Query<T> query) { return isBySegment(query, DEFAULT_BY_SEGMENT); }
@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); }
@Override public Sequence<Row> run(QueryPlus<Row> queryPlus, Map<String, Object> responseContext) { if (QueryContexts.isBySegment(queryPlus.getQuery())) { return runner.run(queryPlus, responseContext); } final GroupByQuery groupByQuery = (GroupByQuery) queryPlus.getQuery(); if (strategySelector.strategize(groupByQuery).doMergeResults(groupByQuery)) { return initAndMergeGroupByResults(groupByQuery, runner, responseContext); } return runner.run(queryPlus, responseContext); } };
@Override @SuppressWarnings("unchecked") public Sequence<T> run(final QueryPlus<T> queryPlus, Map<String, Object> responseContext) { if (QueryContexts.isBySegment(queryPlus.getQuery())) { final Sequence<T> baseSequence = base.run(queryPlus, responseContext); final List<T> results = baseSequence.toList(); return Sequences.simple( Collections.singletonList( (T) new Result<>( timestamp, new BySegmentResultValueClass<>( results, segmentId.toString(), queryPlus.getQuery().getIntervals().get(0) ) ) ) ); } return base.run(queryPlus, responseContext); } }
); final Pair<Queue, Accumulator<Queue, T>> bySegmentAccumulatorPair = GroupByQueryHelper.createBySegmentAccumulatorPair(); final boolean bySegment = QueryContexts.isBySegment(query); final int priority = QueryContexts.getPriority(query); final QueryPlus<T> threadSafeQueryPlus = queryPlus.withoutThreadUnsafeState();
boolean isBySegment = QueryContexts.isBySegment(query);
SpecificQueryRunnable(final QueryPlus<T> queryPlus, final Map<String, Object> responseContext) { this.queryPlus = queryPlus; this.responseContext = responseContext; this.query = queryPlus.getQuery(); this.toolChest = warehouse.getToolChest(query); this.strategy = toolChest.getCacheStrategy(query); this.useCache = CacheUtil.useCacheOnBrokers(query, strategy, cacheConfig); this.populateCache = CacheUtil.populateCacheOnBrokers(query, strategy, cacheConfig); this.isBySegment = QueryContexts.isBySegment(query); // Note that enabling this leads to putting uncovered intervals information in the response headers // and might blow up in some cases https://github.com/apache/incubator-druid/issues/2108 this.uncoveredIntervalsLimit = QueryContexts.getUncoveredIntervalsLimit(query); this.downstreamQuery = query.withOverriddenContext(makeDownstreamQueryContext()); // For nested queries, we need to look at the intervals of the inner most query. this.intervals = query.getIntervalsOfInnerMostQuery(); }
if (QueryContexts.isBySegment(query) || forceChainedExecution) { ChainedExecutionQueryRunner<Row> runner = new ChainedExecutionQueryRunner<>(exec, queryWatcher, queryables); return runner.run(queryPlusForRunners, responseContext);
final boolean isBySegment = QueryContexts.isBySegment(query); final boolean shouldFinalize = QueryContexts.isFinalize(query, true);
final boolean isBySegment = QueryContexts.isBySegment(query);
final boolean isBySegment = QueryContexts.isBySegment(query);
public static <T> boolean isBySegment(Query<T> query) { return isBySegment(query, DEFAULT_BY_SEGMENT); }
@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); }
@Override public Sequence<Row> run(QueryPlus<Row> queryPlus, Map<String, Object> responseContext) { if (QueryContexts.isBySegment(queryPlus.getQuery())) { return runner.run(queryPlus, responseContext); } final GroupByQuery groupByQuery = (GroupByQuery) queryPlus.getQuery(); if (strategySelector.strategize(groupByQuery).doMergeResults(groupByQuery)) { return initAndMergeGroupByResults(groupByQuery, runner, responseContext); } return runner.run(queryPlus, responseContext); } };
@Override @SuppressWarnings("unchecked") public Sequence<T> run(final QueryPlus<T> queryPlus, Map<String, Object> responseContext) { if (QueryContexts.isBySegment(queryPlus.getQuery())) { final Sequence<T> baseSequence = base.run(queryPlus, responseContext); final List<T> results = baseSequence.toList(); return Sequences.simple( Collections.singletonList( (T) new Result<BySegmentResultValueClass<T>>( timestamp, new BySegmentResultValueClass<T>( results, segmentIdentifier, queryPlus.getQuery().getIntervals().get(0) ) ) ) ); } return base.run(queryPlus, responseContext); } }
SpecificQueryRunnable(final QueryPlus<T> queryPlus, final Map<String, Object> responseContext) { this.queryPlus = queryPlus; this.responseContext = responseContext; this.query = queryPlus.getQuery(); this.toolChest = warehouse.getToolChest(query); this.strategy = toolChest.getCacheStrategy(query); this.useCache = CacheUtil.useCacheOnBrokers(query, strategy, cacheConfig); this.populateCache = CacheUtil.populateCacheOnBrokers(query, strategy, cacheConfig); this.isBySegment = QueryContexts.isBySegment(query); // Note that enabling this leads to putting uncovered intervals information in the response headers // and might blow up in some cases https://github.com/apache/incubator-druid/issues/2108 this.uncoveredIntervalsLimit = QueryContexts.getUncoveredIntervalsLimit(query); this.downstreamQuery = query.withOverriddenContext(makeDownstreamQueryContext()); }
); final Pair<Queue, Accumulator<Queue, T>> bySegmentAccumulatorPair = GroupByQueryHelper.createBySegmentAccumulatorPair(); final boolean bySegment = QueryContexts.isBySegment(query); final int priority = QueryContexts.getPriority(query); final QueryPlus<T> threadSafeQueryPlus = queryPlus.withoutThreadUnsafeState();
final boolean isBySegment = QueryContexts.isBySegment(query); final boolean shouldFinalize = QueryContexts.isFinalize(query, true);
final boolean isBySegment = QueryContexts.isBySegment(query);
final boolean isBySegment = QueryContexts.isBySegment(query);