[ https://issues.apache.org/jira/browse/SPARK-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Armbrust resolved SPARK-1610. ------------------------------------- Resolution: Fixed Fix Version/s: 1.0.0 > Cast from BooleanType to NumericType should use exact type value. > ----------------------------------------------------------------- > > Key: SPARK-1610 > URL: https://issues.apache.org/jira/browse/SPARK-1610 > Project: Spark > Issue Type: Bug > Components: SQL > Reporter: Takuya Ueshin > Fix For: 1.0.0 > > > Cast from BooleanType to NumericType are all using Int value. > But it causes ClassCastException when the casted value is used by the > following evaluation like the code below: > {quote} > scala> import org.apache.spark.sql.catalyst._ > import org.apache.spark.sql.catalyst._ > scala> import types._ > import types._ > scala> import expressions._ > import expressions._ > scala> Add(Cast(Literal(true), ShortType), Literal(1.toShort)).eval() > java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.Short > at scala.runtime.BoxesRunTime.unboxToShort(BoxesRunTime.java:102) > at scala.math.Numeric$ShortIsIntegral$.plus(Numeric.scala:72) > at > org.apache.spark.sql.catalyst.expressions.Add$$anonfun$eval$2.apply(arithmetic.scala:58) > at > org.apache.spark.sql.catalyst.expressions.Add$$anonfun$eval$2.apply(arithmetic.scala:58) > at > org.apache.spark.sql.catalyst.expressions.Expression.n2(Expression.scala:114) > at > org.apache.spark.sql.catalyst.expressions.Add.eval(arithmetic.scala:58) > at .<init>(<console>:17) > at .<clinit>(<console>) > at .<init>(<console>:7) > at .<clinit>(<console>) > at $print(<console>) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:483) > at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:734) > at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:983) > at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:573) > at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:604) > at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:568) > at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:760) > at > scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:805) > at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:717) > at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:581) > at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:588) > at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:591) > at > scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:882) > at > scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837) > at > scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837) > at > scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135) > at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:837) > at > scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:83) > at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96) > at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105) > at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) > {quote} -- This message was sent by Atlassian JIRA (v6.2#6252)