private <T> String getDataSourceName(Query<T> query) { DataSource dataSource = query.getDataSource(); if (!(dataSource instanceof TableDataSource)) { throw new UnsupportedOperationException("data source type '" + dataSource.getClass().getName() + "' unsupported"); } String dataSourceName; try { dataSourceName = ((TableDataSource) query.getDataSource()).getName(); } catch (ClassCastException e) { throw new UnsupportedOperationException("Subqueries are only supported in the broker"); } return dataSourceName; }
@Override public VersionedIntervalTimeline<String, ServerSelector> getTimeline(DataSource dataSource) { String table; while (dataSource instanceof QueryDataSource) { dataSource = ((QueryDataSource) dataSource).getQuery().getDataSource(); } if (dataSource instanceof TableDataSource) { table = ((TableDataSource) dataSource).getName(); } else { throw new UnsupportedOperationException("Unsupported data source type: " + dataSource.getClass().getSimpleName()); } synchronized (lock) { return timelines.get(table); } }
private <T> QueryRunner<T> getQueryRunnerImpl(Query<T> query) { QueryRunner<T> queryRunner = null; String queryDataSource; try { queryDataSource = ((TableDataSource)query.getDataSource()).getName(); } catch (ClassCastException e) { throw new IllegalArgumentException("Subqueries are not welcome here"); } for (final ThreadPoolTaskRunnerWorkItem taskRunnerWorkItem : ImmutableList.copyOf(runningItems)) { final Task task = taskRunnerWorkItem.getTask(); if (task.getDataSource().equals(queryDataSource)) { final QueryRunner<T> taskQueryRunner = task.getQueryRunner(query); if (taskQueryRunner != null) { if (queryRunner == null) { queryRunner = taskQueryRunner; } else { log.makeAlert("Found too many query runners for datasource") .addData("dataSource", queryDataSource) .emit(); } } } } return queryRunner == null ? new NoopQueryRunner<T>() : queryRunner; }
dataSourceName = ((TableDataSource) query.getDataSource()).getName();
dataSourceName = ((TableDataSource) query.getDataSource()).getName();
|| !dataSource.equals(((TableDataSource) query.getDataSource()).getName())) { log.makeAlert("Received query for unknown dataSource") .addData("dataSource", query.getDataSource())
public SearchQueryBuilder copy(SearchQuery query) { return new SearchQueryBuilder() .dataSource(((TableDataSource)query.getDataSource()).getName()) .intervals(query.getQuerySegmentSpec()) .filters(query.getDimensionsFilter()) .granularity(query.getGranularity()) .limit(query.getLimit()) .dimensions(query.getDimensions()) .query(query.getQuery()) .context(query.getContext()); }