/** * This function currently handles TopNs on long and float columns, which do not provide cardinality or an ID lookup. * When cardinality is unknown, process everything in one pass. * Existing implementations of makeDimValSelector() require cardinality as well, so the DimValSelector is not used. * * @param params TopN parameters from run() * @param resultBuilder Result builder from run() */ private void runWithCardinalityUnknown( Parameters params, TopNResultBuilder resultBuilder, @Nullable TopNQueryMetrics queryMetrics ) { DimValAggregateStore aggregatesStore = makeDimValAggregateStore(params); if (queryMetrics != null) { queryMetrics.startRecordingScanTime(); } long processedRows = scanAndAggregate(params, null, aggregatesStore); updateResults(params, null, aggregatesStore, resultBuilder); closeAggregators(aggregatesStore); params.getCursor().reset(); if (queryMetrics != null) { queryMetrics.addProcessedRows(processedRows); queryMetrics.stopRecordingScanTime(); } }
@Override public Result<TopNResultValue> apply(Cursor input) { if (queryMetrics != null) { queryMetrics.cursor(input); } return mapFn.apply(input, queryMetrics); } }
@Override public TopNQueryMetrics makeMetrics(TopNQuery query) { TopNQueryMetrics queryMetrics = queryMetricsFactory.makeMetrics(); queryMetrics.query(query); return queryMetrics; }
params = topNAlgorithm.makeInitParams(selectorPlus, cursor); if (queryMetrics != null) { queryMetrics.columnValueSelector(selectorPlus.getSelector()); queryMetrics.numValuesPerPass(params);
final int cardinality = adapter.getDimensionCardinality(dimension); if (queryMetrics != null) { queryMetrics.dimensionCardinality(cardinality); queryMetrics.algorithm(topNAlgorithm);
params = topNAlgorithm.makeInitParams(selectorPlus, cursor); if (queryMetrics != null) { queryMetrics.columnValueSelector(selectorPlus.getSelector()); queryMetrics.numValuesPerPass(params);
final int cardinality = adapter.getDimensionCardinality(dimension); if (queryMetrics != null) { queryMetrics.dimensionCardinality(cardinality); queryMetrics.algorithm(topNAlgorithm);
queryMetrics.startRecordingScanTime(); queryMetrics.addProcessedRows(processedRows); queryMetrics.stopRecordingScanTime();
@Override public TopNQueryMetrics makeMetrics(TopNQuery query) { TopNQueryMetrics queryMetrics = queryMetricsFactory.makeMetrics(); queryMetrics.query(query); return queryMetrics; }
@Override public Result<TopNResultValue> apply(Cursor input) { if (queryMetrics != null) { queryMetrics.cursor(input); } return mapFn.apply(input, queryMetrics); } }
/** * This function currently handles TopNs on long and float columns, which do not provide cardinality or an ID lookup. * When cardinality is unknown, process everything in one pass. * Existing implementations of makeDimValSelector() require cardinality as well, so the DimValSelector is not used. * * @param params TopN parameters from run() * @param resultBuilder Result builder from run() */ private void runWithCardinalityUnknown( Parameters params, TopNResultBuilder resultBuilder, @Nullable TopNQueryMetrics queryMetrics ) { DimValAggregateStore aggregatesStore = makeDimValAggregateStore(params); if (queryMetrics != null) { queryMetrics.startRecordingScanTime(); } long processedRows = scanAndAggregate(params, null, aggregatesStore); updateResults(params, null, aggregatesStore, resultBuilder); closeAggregators(aggregatesStore); params.getCursor().reset(); if (queryMetrics != null) { queryMetrics.addProcessedRows(processedRows); queryMetrics.stopRecordingScanTime(); } }
queryMetrics.startRecordingScanTime(); queryMetrics.addProcessedRows(processedRows); queryMetrics.stopRecordingScanTime();