maropu commented on a change in pull request #20965: [SPARK-21870][SQL] Split aggregation code into small functions URL: https://github.com/apache/spark/pull/20965#discussion_r319720792
########## File path: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/nullExpressions.scala ########## @@ -354,12 +354,14 @@ case class IsNotNull(child: Expression) extends UnaryExpression with Predicate { override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = { val eval = child.genCode(ctx) - val value = eval.isNull match { - case TrueLiteral => FalseLiteral - case FalseLiteral => TrueLiteral - case v => JavaCode.isNullExpression(s"!$v") + val (value, newCode) = eval.isNull match { + case TrueLiteral => (FalseLiteral, EmptyBlock) + case FalseLiteral => (TrueLiteral, EmptyBlock) + case v => + val value = ctx.freshName("value") + (JavaCode.variable(value, BooleanType), code"boolean $value = !$v;") Review comment: A simple query to reproduce this issue is as follows (without both changes); ``` sql(""" SELECT sum(CASE WHEN c0 IS NULL AND c1 IS NOT NULL THEN 1 ELSE 0 END) a, sum(CASE WHEN c0 IS NOT NULL AND c1 IS NOT NULL THEN 1 ELSE 0 END) b FROM VALUES ((null, null)) t(c0, c1) """).show ``` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org