public LimitSpec withLimit(OptionalInt limit) { return new LimitSpec(columns, limit); } // CHECKSTYLE:ON
/** * Strip the columns from the LimitSpec on the query and return it, if present. * * @param query Query to strip the columns from within the LimitSpec * * @return the cleaned LimitSpec if there is one */ private static LimitSpec stripColumnsFromLimitSpec(DruidFactQuery query) { return ((GroupByQuery) query).getLimitSpec() == null ? null : ((GroupByQuery) query).getLimitSpec().withColumns(new LinkedHashSet<>()); } }
/** * Gets the number of rows to limit results to for a Group by Query. Otherwise no limit is applied. * * @param druidQuery The query to get the row limit from. * * @return the number of rows to include in the results. */ protected int getLimit(DruidAggregationQuery<?> druidQuery) { if (druidQuery.getQueryType().equals(GROUP_BY)) { GroupByQuery groupByQuery = (GroupByQuery) druidQuery; LimitSpec limitSpec = groupByQuery.getLimitSpec(); if (limitSpec != null) { return limitSpec.getLimit().orElse(NO_LIMIT); } } return NO_LIMIT; }
LimitSpec limitSpec = groupByQuery.getLimitSpec(); if (limitSpec != null) { limitSpec.getColumns() .stream() .map(orderByColumn -> {
public LimitSpec withColumns(LinkedHashSet<OrderByColumn> sortColumns) { return new LimitSpec(sortColumns, limit); }
@Override public void query(Dimension dimension, DataSource dataSource) { SuccessCallback successCallback = buildSuccessCallback(dimension); SqlPhysicalTable sqlTable = (SqlPhysicalTable) dataSource.getPhysicalTable().getSourceTable(); GroupByQuery groupByQuery = new GroupByQuery( dataSource, AllGranularity.INSTANCE, Collections.singletonList(dimension), null, null, Collections.emptyList(), Collections.emptyList(), Collections.singletonList(INTERVAL), new LimitSpec(Utils.asLinkedHashSet(), OptionalInt.of(ROW_LIMIT)) ); sqlBackedClient.executeQuery(groupByQuery, successCallback, failureCallback); }
druidTopNMetric = new TopNMetric(sortBy.getDimension(), sortBy.getDirection()); } else if (request.getSorts().size() > 0) { druidOrderBy = new LimitSpec(request.getSorts()); druidTopNMetric = null; } else { } else { druidOrderBy = new LimitSpec(request.getSorts(), request.getCount()); druidTopNMetric = null;