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

    https://github.com/apache/spark/pull/999#discussion_r13828272
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala
 ---
    @@ -108,19 +118,18 @@ trait HiveTypeCoercion {
        *
        * Additionally, all types when UNION-ed with strings will be promoted 
to strings.
        * Other string conversions are handled by PromoteStrings.
    +   *
    +   * Widening types might result in loss of precision in the following 
cases:
    +   * - IntegerType to FloatType
    +   * - LongType to FloatType
    +   * - LongType to DoubleType
        */
       object WidenTypes extends Rule[LogicalPlan] {
    -    // See 
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types.
    -    // The conversion for integral and floating point types have a linear 
widening hierarchy:
    -    val numericPrecedence =
    -      Seq(NullType, ByteType, ShortType, IntegerType, LongType, FloatType, 
DoubleType, DecimalType)
    -    // Boolean is only wider than Void
    -    val booleanPrecedence = Seq(NullType, BooleanType)
    -    val allPromotions: Seq[Seq[DataType]] = numericPrecedence :: 
booleanPrecedence :: Nil
     
         def findTightestCommonType(t1: DataType, t2: DataType): 
Option[DataType] = {
           // Try and find a promotion rule that contains both types in 
question.
    -      val applicableConversion = allPromotions.find(p => p.contains(t1) && 
p.contains(t2))
    +      val applicableConversion = HiveTypeCoercion.allPromotions.find(p => 
p.contains(t1) && p
    --- End diff --
    
    In general I'd prefer to break at a higher syntactic level.  (i.e., right 
after the && or even put the whole command on the next line with only the `val 
applicableConversion =` on the line above).


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to