@@ -174,7 +174,7 @@ object QueryPlanSerde extends Logging with CometExprShim {
174174 /**
175175 * Mapping of Spark aggregate expression class to Comet expression handler.
176176 */
177- private val aggrSerdeMap : Map [Class [_], CometAggregateExpressionSerde ] = Map (
177+ private val aggrSerdeMap : Map [Class [_], CometAggregateExpressionSerde [_] ] = Map (
178178 classOf [Sum ] -> CometSum ,
179179 classOf [Average ] -> CometAverage ,
180180 classOf [Count ] -> CometCount ,
@@ -498,7 +498,9 @@ object QueryPlanSerde extends Logging with CometExprShim {
498498 val cometExpr = aggrSerdeMap.get(fn.getClass)
499499 cometExpr match {
500500 case Some (handler) =>
501- handler.convert(aggExpr, fn, inputs, binding, conf)
501+ handler
502+ .asInstanceOf [CometAggregateExpressionSerde [AggregateFunction ]]
503+ .convert(aggExpr, fn, inputs, binding, conf)
502504 case _ =>
503505 withInfo(
504506 aggExpr,
@@ -2456,7 +2458,7 @@ trait CometExpressionSerde[T <: Expression] {
24562458/**
24572459 * Trait for providing serialization logic for aggregate expressions.
24582460 */
2459- trait CometAggregateExpressionSerde {
2461+ trait CometAggregateExpressionSerde [ T <: AggregateFunction ] {
24602462
24612463 /**
24622464 * Convert a Spark expression into a protocol buffer representation that can be passed into
@@ -2479,7 +2481,7 @@ trait CometAggregateExpressionSerde {
24792481 */
24802482 def convert (
24812483 aggExpr : AggregateExpression ,
2482- expr : Expression ,
2484+ expr : T ,
24832485 inputs : Seq [Attribute ],
24842486 binding : Boolean ,
24852487 conf : SQLConf ): Option [ExprOuterClass .AggExpr ]
0 commit comments