Github user tanejagagan commented on a diff in the pull request:
https://github.com/apache/spark/pull/16497#discussion_r95092209
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/Percentile.scala
---
@@ -91,10 +111,19 @@ case class Percentile(
case _ => DoubleType
}
- override def inputTypes: Seq[AbstractDataType] =
percentageExpression.dataType match {
- case _: ArrayType => Seq(NumericType, ArrayType(DoubleType))
- case _ => Seq(NumericType, DoubleType)
- }
+ override def inputTypes: Seq[AbstractDataType] =
+ if (frequency == unit) {
+ percentageExpression.dataType match {
+ case _: ArrayType => Seq(NumericType, ArrayType(DoubleType))
+ case _ => Seq(NumericType, DoubleType)
+ }
+ } else {
+ percentageExpression.dataType match {
--- End diff --
It seems like I would have to do it based on what were the argument in the
SQL and which constructor was invoked
for sql without Frequency like percentile( `a`, 0.5 ) children need to be
child:: percentageExpr::Nil
for sql with Frequency like percentile( `a`, `frq`, 0.5 ) children need to
be child::frequency::percentageExpr::Nil
As well as input type should be reflected on how many arguments were passed
Both InputDataType Check and generated sql tests fails
However i have made changes in the logic to determine which constructor was
invoked and decide inputType and children based on it
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]