@Override public Sequence<Result<SelectResultValue>> run( QueryPlus<Result<SelectResultValue>> queryPlus, Map<String, Object> responseContext ) { Query<Result<SelectResultValue>> input = queryPlus.getQuery(); if (!(input instanceof SelectQuery)) { throw new ISE("Got a [%s] which isn't a %s", input.getClass(), SelectQuery.class); } return engine.process((SelectQuery) input, segment); } }
@Override public Sequence<Result<TimeseriesResultValue>> run( QueryPlus<Result<TimeseriesResultValue>> queryPlus, Map<String, Object> responseContext ) { Query<Result<TimeseriesResultValue>> input = queryPlus.getQuery(); if (!(input instanceof TimeseriesQuery)) { throw new ISE("Got a [%s] which isn't a %s", input.getClass(), TimeseriesQuery.class); } return engine.process((TimeseriesQuery) input, adapter); } }
@Override public Sequence<Row> run(QueryPlus<Row> queryPlus, Map<String, Object> responseContext) { Query<Row> query = queryPlus.getQuery(); if (!(query instanceof GroupByQuery)) { throw new ISE("Got a [%s] which isn't a %s", query.getClass(), GroupByQuery.class); } return strategySelector.strategize((GroupByQuery) query).process((GroupByQuery) query, adapter); } }
@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 public Sequence<Result<TopNResultValue>> run( QueryPlus<Result<TopNResultValue>> queryPlus, Map<String, Object> responseContext ) { this.query = (TopNQuery) queryPlus.getQuery(); return runner.run(queryPlus, responseContext); } }
@Override public Sequence<T> run(QueryPlus<T> queryPlus, Map<String, Object> responseContext) { return baseRunner.run( QueryPlus.wrap(withTimeoutAndMaxScatterGatherBytes(queryPlus.getQuery(), serverConfig)), responseContext ); }
@Override public Sequence<Row> run(QueryPlus<Row> queryPlus, Map<String, Object> responseContext) { QueryRunner<Row> rowQueryRunner = strategySelector.strategize((GroupByQuery) queryPlus.getQuery()).mergeRunners( queryExecutor, queryRunners ); return rowQueryRunner.run(queryPlus, responseContext); } };
@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 answer() { return toFilteredQueryableTimeseriesResults( (TimeseriesQuery) capture.getValue().getQuery(), segmentIds, queryIntervals, results ); } })
@Override public Sequence<T> doRun(QueryRunner<T> baseRunner, QueryPlus<T> queryPlus, Map<String, Object> context) { Query<T> query = queryPlus.getQuery(); return CombiningSequence.create(baseRunner.run(queryPlus, context), makeOrdering(query), createMergeFn(query)); }
@Override protected Sequence<Result<DataSourceMetadataResultValue>> doRun( QueryRunner<Result<DataSourceMetadataResultValue>> baseRunner, QueryPlus<Result<DataSourceMetadataResultValue>> input, Map<String, Object> context ) { DataSourceMetadataQuery query = (DataSourceMetadataQuery) input.getQuery(); return Sequences.simple( query.mergeResults(baseRunner.run(input, context).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); } };
@Override public Sequence<Result<TimeseriesResultValue>> run( QueryPlus<Result<TimeseriesResultValue>> queryPlus, Map<String, Object> responseContext ) { if (queryPlus.getQuery().getDataSource().equals(new TableDataSource("ds1"))) { return Sequences.simple(descending ? Lists.reverse(ds1) : ds1); } else { return Sequences.simple(descending ? Lists.reverse(ds2) : ds2); } } }
@Override public Sequence run(QueryPlus queryPlus, Map responseContext) { Query realQuery = getRealQuery(queryPlus.getQuery()); QueryToolChest realQueryToolChest = warehouse.getToolChest(realQuery); QueryRunner realQueryRunner = realQueryToolChest.preMergeQueryDecoration( new MaterializedViewQueryRunner(runner, optimizer) ); return realQueryRunner.run(queryPlus.withQuery(realQuery), responseContext); } };
@Override public Sequence<ScanResultValue> run(QueryPlus<ScanResultValue> queryPlus, Map<String, Object> responseContext) { ScanQuery scanQuery = (ScanQuery) queryPlus.getQuery(); if (scanQuery.getFilter() != null) { scanQuery = scanQuery.withDimFilter(scanQuery.getFilter().optimize()); queryPlus = queryPlus.withQuery(scanQuery); } return runner.run(queryPlus, responseContext); } };
@Override public Sequence<Row> run(QueryPlus<Row> queryPlus, Map<String, Object> responseContext) { return Sequences .simple( ImmutableList.of( theRunner.run(queryPlus, responseContext), theRunner2.run(queryPlus, responseContext) ) ) .flatMerge(Function.identity(), queryPlus.getQuery().getResultOrdering()); } }
@Override public Sequence<Row> run(QueryPlus<Row> queryPlus, Map<String, Object> responseContext) { return Sequences .simple( ImmutableList.of( theRunner.run(queryPlus, responseContext), theRunner2.run(queryPlus, responseContext) ) ) .flatMerge(Function.identity(), queryPlus.getQuery().getResultOrdering()); } }
@Override public Sequence<Row> run(QueryPlus<Row> queryPlus, Map<String, Object> responseContext) { return Sequences .simple( ImmutableList.of( theRunner.run(queryPlus, responseContext), theRunner2.run(queryPlus, responseContext) ) ) .flatMerge(Function.identity(), queryPlus.getQuery().getResultOrdering()); } }
@Override public QueryRunner<Result<TimeseriesResultValue>> preMergeQueryDecoration(final QueryRunner<Result<TimeseriesResultValue>> runner) { return intervalChunkingQueryRunnerDecorator.decorate( (queryPlus, responseContext) -> { TimeseriesQuery timeseriesQuery = (TimeseriesQuery) queryPlus.getQuery(); if (timeseriesQuery.getDimensionsFilter() != null) { timeseriesQuery = timeseriesQuery.withDimFilter(timeseriesQuery.getDimensionsFilter().optimize()); queryPlus = queryPlus.withQuery(timeseriesQuery); } return runner.run(queryPlus, responseContext); }, this); }