public Builder setDataSource(Query query) { this.dataSource = new QueryDataSource(query); return this; }
@Nullable @Override public DruidQuery toDruidQuery(final boolean finalizeAggregations) { // Must finalize aggregations on subqueries. final DruidQuery subQuery = ((DruidRel) sourceRel).toDruidQuery(true); if (subQuery == null) { return null; } final RowSignature sourceRowSignature = subQuery.getOutputRowSignature(); return partialQuery.build( new QueryDataSource(subQuery.toGroupByQuery()), sourceRowSignature, getPlannerContext(), getCluster().getRexBuilder(), finalizeAggregations ); }
@Test public void testQueryDataSource() throws IOException { GroupByQuery query = GroupByQuery .builder() .setDataSource(QueryRunnerTestHelper.dataSource) .setQuerySegmentSpec(QueryRunnerTestHelper.firstToThird) .setDimensions(new DefaultDimensionSpec("quality", "alias")) .setAggregatorSpecs(QueryRunnerTestHelper.rowsCount, new LongSumAggregatorFactory("idx", "index")) .setGranularity(QueryRunnerTestHelper.dayGran) .build(); String dataSourceJSON = "{\"type\":\"query\", \"query\":" + jsonMapper.writeValueAsString(query) + "}"; DataSource dataSource = jsonMapper.readValue(dataSourceJSON, DataSource.class); Assert.assertEquals(new QueryDataSource(query), dataSource); }
GroupByQuery.builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(CalciteTests.DATASOURCE1)
.builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(QueryRunnerTestHelper.dataSource)
@Test(timeout = 60_000L) public void testNotEnoughMergeBuffersOnQueryable() { expectedException.expect(QueryInterruptedException.class); expectedException.expectCause(CoreMatchers.instanceOf(TimeoutException.class)); expectedException.expectMessage("Cannot acquire enough merge buffers"); final GroupByQuery query = GroupByQuery .builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(QueryRunnerTestHelper.dataSource) .setInterval(QueryRunnerTestHelper.firstToThird) .setGranularity(Granularities.ALL) .setDimensions(new DefaultDimensionSpec("quality", "alias")) .setAggregatorSpecs(Collections.singletonList(QueryRunnerTestHelper.rowsCount)) .build() ) ) .setGranularity(Granularities.ALL) .setInterval(QueryRunnerTestHelper.firstToThird) .setAggregatorSpecs(new LongSumAggregatorFactory("rows", "rows")) .setContext(ImmutableMap.of(QueryContexts.TIMEOUT_KEY, 500)) .build(); GroupByQueryRunnerTestHelper.runQuery(factory, runner, query); }
@Test public void testNestedGroupBy() { final GroupByQuery query = GroupByQuery .builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(QueryRunnerTestHelper.dataSource) .setInterval(QueryRunnerTestHelper.firstToThird) .setGranularity(Granularities.ALL) .setDimensions(new DefaultDimensionSpec("quality", "alias")) .setAggregatorSpecs(Collections.singletonList(QueryRunnerTestHelper.rowsCount)) .build() ) ) .setGranularity(Granularities.ALL) .setInterval(QueryRunnerTestHelper.firstToThird) .setAggregatorSpecs(new LongSumAggregatorFactory("rows", "rows")) .setContext(ImmutableMap.of(QueryContexts.TIMEOUT_KEY, TIMEOUT)) .build(); GroupByQueryRunnerTestHelper.runQuery(factory, runner, query); assertEquals(1, mergeBufferPool.getMinRemainBufferNum()); assertEquals(3, mergeBufferPool.getPoolSize()); }
GroupByQuery.builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(CalciteTests.DATASOURCE1)
GroupByQuery.builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(CalciteTests.DATASOURCE1)
GroupByQuery.builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(CalciteTests.DATASOURCE1)
GroupByQuery.builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(CalciteTests.DATASOURCE1)
GroupByQuery.builder() .setDataSource( new QueryDataSource( GroupByQuery.builder() .setDataSource(CalciteTests.DATASOURCE1)
query = (GroupByQuery) query.withDataSource(new QueryDataSource(subquery));
public Builder setDataSource(Query query) { this.dataSource = new QueryDataSource(query); return this; }
@Nullable @Override public DruidQuery toDruidQuery(final boolean finalizeAggregations) { // Must finalize aggregations on subqueries. final DruidQuery subQuery = ((DruidRel) sourceRel).toDruidQuery(true); if (subQuery == null) { return null; } final RowSignature sourceRowSignature = subQuery.getOutputRowSignature(); return partialQuery.build( new QueryDataSource(subQuery.toGroupByQuery()), sourceRowSignature, getPlannerContext(), getCluster().getRexBuilder(), finalizeAggregations ); }