Github user cloud-fan commented on a diff in the pull request:

    https://github.com/apache/spark/pull/17876#discussion_r115921047
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala
 ---
    @@ -455,8 +457,17 @@ object FunctionRegistry {
       private def expression[T <: Expression](name: String)
           (implicit tag: ClassTag[T]): (String, (ExpressionInfo, 
FunctionBuilder)) = {
     
    +    // For `RuntimeReplaceable`, skip the constructor with most arguments, 
which is the main
    +    // constructor and contains non-parameter `child` and should not be 
used as function builder.
    +    val constructors = if 
(classOf[RuntimeReplaceable].isAssignableFrom(tag.runtimeClass)) {
    +      val all = tag.runtimeClass.getConstructors
    +      val maxNumArgs = all.map(_.getParameterCount).max
    +      all.filterNot(_.getParameterCount == maxNumArgs)
    +    } else {
    +      tag.runtimeClass.getConstructors
    --- End diff --
    
    `getDeclaredConstructor` will find a specific constructor matching the 
given parameter types. Now I have some special logic about choosing the 
constructor, so I call `getConstructors` to get all the constructors.


---
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]

Reply via email to