private static long scanAndAggregateHistorical1SimpleDoubleAgg( PooledTopNParams params, int[] positions, SimpleDoubleBufferAggregator aggregator, HistoricalCursor cursor, Historical1AggPooledTopNScanner prototypeScanner ) { String runtimeShape = StringRuntimeShape.of(aggregator); SpecializationState<Historical1AggPooledTopNScanner> specializationState = SpecializationService.getSpecializationState( prototypeScanner.getClass(), runtimeShape, ImmutableMap.of(Offset.class, cursor.getOffset().getClass()) ); Historical1AggPooledTopNScanner scanner = specializationState.getSpecializedOrDefault(prototypeScanner); long processedRows = scanner.scanAndAggregate( (HistoricalDimensionSelector) params.getDimSelector(), aggregator.getSelector(), aggregator, params.getAggregatorSizes()[0], cursor, positions, params.getResultsBuf() ); specializationState.accountLoopIterations(processedRows); return processedRows; }
params.getDimSelector() instanceof SingleValueHistoricalDimensionSelector && ((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalColumnSelector) { return scanAndAggregateHistorical1SimpleDoubleAgg( params.getDimSelector() instanceof HistoricalDimensionSelector && ((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalColumnSelector) { return scanAndAggregateHistorical1SimpleDoubleAgg(
@Override protected void updateResults( PooledTopNParams params, int[] positions, BufferAggregator[] theAggregators, TopNResultBuilder resultBuilder ) { if (params.getCardinality() < 0) { throw new UnsupportedOperationException("Cannot operate on a dimension with unknown cardinality"); } final ByteBuffer resultsBuf = params.getResultsBuf(); final int[] aggregatorSizes = params.getAggregatorSizes(); final DimensionSelector dimSelector = params.getDimSelector(); for (int i = 0; i < positions.length; i++) { int position = positions[i]; if (position >= 0) { Object[] vals = new Object[theAggregators.length]; for (int j = 0; j < theAggregators.length; j++) { vals[j] = theAggregators[j].get(resultsBuf, position); position += aggregatorSizes[j]; } // Output type must be STRING in order for PooledTopNAlgorithm to make sense; so no need to convert value. resultBuilder.addEntry(dimSelector.lookupName(i), i, vals); } } }
final int[] aggregatorSizes = params.getAggregatorSizes(); final Cursor cursor = params.getCursor(); final DimensionSelector dimSelector = params.getDimSelector();
params.getDimSelector() instanceof SingleValueHistoricalDimensionSelector && ((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalColumnSelector) { return scanAndAggregateHistorical1SimpleDoubleAgg( params.getDimSelector() instanceof HistoricalDimensionSelector && ((SimpleDoubleBufferAggregator) aggregator).getSelector() instanceof HistoricalColumnSelector) { return scanAndAggregateHistorical1SimpleDoubleAgg(
@Override protected void updateResults( PooledTopNParams params, int[] positions, BufferAggregator[] theAggregators, TopNResultBuilder resultBuilder ) { if (params.getCardinality() < 0) { throw new UnsupportedOperationException("Cannot operate on a dimension with unknown cardinality"); } final ByteBuffer resultsBuf = params.getResultsBuf(); final int[] aggregatorSizes = params.getAggregatorSizes(); final DimensionSelector dimSelector = params.getDimSelector(); for (int i = 0; i < positions.length; i++) { int position = positions[i]; if (position >= 0) { Object[] vals = new Object[theAggregators.length]; for (int j = 0; j < theAggregators.length; j++) { vals[j] = theAggregators[j].get(resultsBuf, position); position += aggregatorSizes[j]; } // Output type must be STRING in order for PooledTopNAlgorithm to make sense; so no need to convert value. resultBuilder.addEntry(dimSelector.lookupName(i), i, vals); } } }
private static long scanAndAggregateHistorical1SimpleDoubleAgg( PooledTopNParams params, int[] positions, SimpleDoubleBufferAggregator aggregator, HistoricalCursor cursor, Historical1AggPooledTopNScanner prototypeScanner ) { String runtimeShape = StringRuntimeShape.of(aggregator); SpecializationState<Historical1AggPooledTopNScanner> specializationState = SpecializationService.getSpecializationState( prototypeScanner.getClass(), runtimeShape, ImmutableMap.of(Offset.class, cursor.getOffset().getClass()) ); Historical1AggPooledTopNScanner scanner = specializationState.getSpecializedOrDefault(prototypeScanner); long processedRows = scanner.scanAndAggregate( (HistoricalDimensionSelector) params.getDimSelector(), aggregator.getSelector(), aggregator, params.getAggregatorSizes()[0], cursor, positions, params.getResultsBuf() ); specializationState.accountLoopIterations(processedRows); return processedRows; }
private static long scanAndAggregateGeneric2Agg( PooledTopNParams params, int[] positions, BufferAggregator[] theAggregators, Cursor cursor ) { String runtimeShape = StringRuntimeShape.of(theAggregators); Class<? extends Generic2AggPooledTopNScanner> prototypeClass = Generic2AggPooledTopNScannerPrototype.class; SpecializationState<Generic2AggPooledTopNScanner> specializationState = SpecializationService .getSpecializationState(prototypeClass, runtimeShape); Generic2AggPooledTopNScanner scanner = specializationState.getSpecializedOrDefault(defaultGeneric2AggScanner); int[] aggregatorSizes = params.getAggregatorSizes(); long processedRows = scanner.scanAndAggregate( params.getDimSelector(), theAggregators[0], aggregatorSizes[0], theAggregators[1], aggregatorSizes[1], cursor, positions, params.getResultsBuf() ); specializationState.accountLoopIterations(processedRows); return processedRows; }
private static long scanAndAggregateGeneric1Agg( PooledTopNParams params, int[] positions, BufferAggregator aggregator, Cursor cursor ) { String runtimeShape = StringRuntimeShape.of(aggregator); Class<? extends Generic1AggPooledTopNScanner> prototypeClass = Generic1AggPooledTopNScannerPrototype.class; SpecializationState<Generic1AggPooledTopNScanner> specializationState = SpecializationService .getSpecializationState(prototypeClass, runtimeShape); Generic1AggPooledTopNScanner scanner = specializationState.getSpecializedOrDefault(defaultGeneric1AggScanner); long processedRows = scanner.scanAndAggregate( params.getDimSelector(), aggregator, params.getAggregatorSizes()[0], cursor, positions, params.getResultsBuf() ); specializationState.accountLoopIterations(processedRows); return processedRows; }
final int[] aggregatorSizes = params.getAggregatorSizes(); final Cursor cursor = params.getCursor(); final DimensionSelector dimSelector = params.getDimSelector();
private static long scanAndAggregateGeneric2Agg( PooledTopNParams params, int[] positions, BufferAggregator[] theAggregators, Cursor cursor ) { String runtimeShape = StringRuntimeShape.of(theAggregators); Class<? extends Generic2AggPooledTopNScanner> prototypeClass = Generic2AggPooledTopNScannerPrototype.class; SpecializationState<Generic2AggPooledTopNScanner> specializationState = SpecializationService .getSpecializationState(prototypeClass, runtimeShape); Generic2AggPooledTopNScanner scanner = specializationState.getSpecializedOrDefault(defaultGeneric2AggScanner); int[] aggregatorSizes = params.getAggregatorSizes(); long processedRows = scanner.scanAndAggregate( params.getDimSelector(), theAggregators[0], aggregatorSizes[0], theAggregators[1], aggregatorSizes[1], cursor, positions, params.getResultsBuf() ); specializationState.accountLoopIterations(processedRows); return processedRows; }
private static long scanAndAggregateGeneric1Agg( PooledTopNParams params, int[] positions, BufferAggregator aggregator, Cursor cursor ) { String runtimeShape = StringRuntimeShape.of(aggregator); Class<? extends Generic1AggPooledTopNScanner> prototypeClass = Generic1AggPooledTopNScannerPrototype.class; SpecializationState<Generic1AggPooledTopNScanner> specializationState = SpecializationService .getSpecializationState(prototypeClass, runtimeShape); Generic1AggPooledTopNScanner scanner = specializationState.getSpecializedOrDefault(defaultGeneric1AggScanner); long processedRows = scanner.scanAndAggregate( params.getDimSelector(), aggregator, params.getAggregatorSizes()[0], cursor, positions, params.getResultsBuf() ); specializationState.accountLoopIterations(processedRows); return processedRows; }