/** Returns a consumer that checks that a particular Druid query is * generated to implement a query. */ private static Consumer<List> druidChecker(final String... lines) { return list -> { assertThat(list.size(), is(1)); DruidQuery.QuerySpec querySpec = (DruidQuery.QuerySpec) list.get(0); for (String line : lines) { final String s = line.replace('\'', '"'); assertThat(querySpec.getQueryString(null, -1), containsString(s)); } }; }
return new QuerySpec(queryType, sw.toString(), fieldNames);
return new QuerySpec(QueryType.SCAN, scanQuery.toQuery(), scanColumnNames); return new QuerySpec(QueryType.TIMESERIES, timeSeriesQueryString, timeseriesFieldNames); return new QuerySpec(QueryType.TIMESERIES, timeSeriesQueryString, queryOutputFieldNames); return new QuerySpec(QueryType.TOP_N, topNQuery, queryOutputFieldNames); throw new IllegalStateException("Can not plan Druid Query"); return new QuerySpec(QueryType.GROUP_BY, groupByQuery, queryOutputFieldNames);
public void run() throws InterruptedException { final List<ColumnMetaData.Rep> fieldTypes = new ArrayList<>(); for (RelDataTypeField field : query.getRowType().getFieldList()) { fieldTypes.add(getPrimitive(field)); } final DruidConnectionImpl connection = new DruidConnectionImpl(query.druidTable.schema.url, query.druidTable.schema.coordinatorUrl); final boolean limitQuery = containsLimit(querySpec); final DruidConnectionImpl.Page page = new DruidConnectionImpl.Page(); do { final String queryString = querySpec.getQueryString(page.pagingIdentifier, page.offset); connection.request(querySpec.queryType, queryString, sink, querySpec.fieldNames, fieldTypes, page); } while (!limitQuery && page.pagingIdentifier != null && page.totalRowCount > 0); }
public void run() throws InterruptedException { final List<ColumnMetaData.Rep> fieldTypes = new ArrayList<>(); for (RelDataTypeField field : query.getRowType().getFieldList()) { fieldTypes.add(getPrimitive(field)); } final DruidConnectionImpl connection = new DruidConnectionImpl(query.druidTable.schema.url, query.druidTable.schema.coordinatorUrl); final boolean limitQuery = containsLimit(querySpec); final DruidConnectionImpl.Page page = new DruidConnectionImpl.Page(); do { final String queryString = querySpec.getQueryString(page.pagingIdentifier, page.offset); connection.request(querySpec.queryType, queryString, sink, querySpec.fieldNames, fieldTypes, page); } while (!limitQuery && page.pagingIdentifier != null && page.totalRowCount > 0); }
private String convertToDruidQuery(RelNode root) { return findDruidQuery(root).getQuerySpec().getQueryString(null, 0); }
/** Returns a function that checks that a particular Druid query is * generated to implement a query. */ private static Consumer<List> druidChecker(final String... lines) { return list -> { assertThat(list.size(), is(1)); DruidQuery.QuerySpec querySpec = (DruidQuery.QuerySpec) list.get(0); for (String line : lines) { final String s = line.replace('\'', '"'); assertThat(querySpec.getQueryString(null, -1), containsString(s)); } }; }