@Override public int getMemBytes() { return guessLongMemBytes(); }
public static MeasureAggregator<?> create(String funcName, String returnType) { if (FunctionDesc.FUNC_SUM.equalsIgnoreCase(funcName) || FunctionDesc.FUNC_COUNT.equalsIgnoreCase(funcName)) { if (isInteger(returnType)) return new LongSumAggregator(); else if (isBigDecimal(returnType)) return new BigDecimalSumAggregator(); else if (isDouble(returnType)) return new DoubleSumAggregator(); } else if (FunctionDesc.FUNC_COUNT_DISTINCT.equalsIgnoreCase(funcName)) { if (DataType.getInstance(returnType).isHLLC()) return new HLLCAggregator(); else return new LDCAggregator(); } else if (FunctionDesc.FUNC_MAX.equalsIgnoreCase(funcName)) { if (isInteger(returnType)) return new LongMaxAggregator(); else if (isBigDecimal(returnType)) return new BigDecimalMaxAggregator(); else if (isDouble(returnType)) return new DoubleMaxAggregator(); } else if (FunctionDesc.FUNC_MIN.equalsIgnoreCase(funcName)) { if (isInteger(returnType)) return new LongMinAggregator(); else if (isBigDecimal(returnType)) return new BigDecimalMinAggregator(); else if (isDouble(returnType)) return new DoubleMinAggregator(); } throw new IllegalArgumentException("No aggregator for func '" + funcName + "' and return type '" + returnType + "'"); }