Github user rxin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/6405#discussion_r31108889
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala
 ---
    @@ -124,12 +124,45 @@ case class GroupExpression(children: Seq[Expression]) 
extends Expression {
       override def dataType: DataType = throw new UnsupportedOperationException
     }
     
    +trait TypeConstraint {
    +  self: Expression =>
    +
    +  def isTypeMatch: Boolean
    +
    +  def errorMessage: String
    +
    +  override lazy val resolved = childrenResolved && isTypeMatch
    +}
    +
     /**
      * Expressions that require a specific `DataType` as input should 
implement this trait
      * so that the proper type conversions can be performed in the analyzer.
      */
    -trait ExpectsInputTypes {
    +trait ExpectsInputTypes extends TypeConstraint {
    +  self: Expression =>
     
       def expectedChildTypes: Seq[DataType]
     
    +  def isTypeMatch: Boolean = children.map(_.dataType) == expectedChildTypes
    +
    +  // This won't be called as we always do type cast for it in 
`HiveTypeCoercion`.
    +  def errorMessage: String = throw new UnsupportedOperationException
    +}
    +
    +trait TypeEqualConstraint extends TypeConstraint {
    --- End diff --
    
    I'd remove this and just put it in the 3 places that use this right now. It 
is not that big of deal to duplicate this tiny amount of code.



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