in src/main/scala/org/apache/spark/sql/datasketches/kll/aggregate/KllDoublesSketchAggBuild.scala [127:142]
override def createAggregationBuffer(): KllDoublesSketch = KllDoublesSketch.newHeapInstance(k)
override def update(sketch: KllDoublesSketch, input: InternalRow): KllDoublesSketch = {
val value = dataExpr.eval(input)
if (value != null) {
dataExpr.dataType match {
case DoubleType => sketch.update(value.asInstanceOf[Double])
case FloatType => sketch.update(value.asInstanceOf[Float].toDouble)
case IntegerType => sketch.update(value.asInstanceOf[Int].toDouble)
case LongType => sketch.update(value.asInstanceOf[Long].toDouble)
case _ => throw new IllegalArgumentException(
s"Unsupported input type ${dataExpr.dataType.catalogString}")
}
}
sketch
}