[ https://issues.apache.org/jira/browse/SPARK-19311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15831888#comment-15831888 ]
Liang-Chi Hsieh edited comment on SPARK-19311 at 1/20/17 3:06 PM: ------------------------------------------------------------------ [~gmoehler] I think you already have the fixing. Can you directly submit the PR? Thanks. was (Author: viirya): [~Gregor Moehler] I think you already have the fixing. Can you directly submit the PR? Thanks. > UDFs disregard UDT type hierarchy > --------------------------------- > > Key: SPARK-19311 > URL: https://issues.apache.org/jira/browse/SPARK-19311 > Project: Spark > Issue Type: Bug > Components: SQL > Affects Versions: 2.1.0 > Reporter: Gregor Moehler > Original Estimate: 1h > Remaining Estimate: 1h > > When you define UDTs based on hierarchical traits UDFs disregard the type > hierarchy: > E.g. I have 2 UDTs based on 2 hierarchical traits. I then define 2 UDFs: The > first one returns the derived type, the second takes the base type. This > results in an error, although i believe it should be feasible: > {quote} > (...)cannot resolve 'UDF(UDF(22))' due to data type mismatch: argument 1 > requires exampleBaseType type, however, 'UDF(22)' is of exampleFirstSubType > type. > {quote} > The reason is that DataType defines > {quote} > override private[sql] def acceptsType(dataType: DataType) = > this.getClass == dataType.getClass > {quote} > However I believe it should be: > {quote} > override private[sql] def acceptsType(dataType: DataType) = dataType match \{ > case other: UserDefinedType[_] => > this.getClass == other.getClass || > this.userClass.isAssignableFrom(other.userClass) > case _ => false > \} > {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org