@@ -87,7 +87,7 @@ trait HiveTypeCoercion {
8787 WidenTypes ::
8888 PromoteStrings ::
8989 DecimalPrecision ::
90- BooleanEqualization ::
90+ BooleanEquality ::
9191 StringToIntegralCasts ::
9292 FunctionArgumentConversion ::
9393 CaseWhenCoercion ::
@@ -479,9 +479,9 @@ trait HiveTypeCoercion {
479479 /**
480480 * Changes numeric values to booleans so that expressions like true = 1 can be evaluated.
481481 */
482- object BooleanEqualization extends Rule [LogicalPlan ] {
483- private val trueValues = Seq (1 .toByte, 1 .toShort, 1 , 1L , new java.math. BigDecimal (1 ))
484- private val falseValues = Seq (0 .toByte, 0 .toShort, 0 , 0L , new java.math. BigDecimal (0 ))
482+ object BooleanEquality extends Rule [LogicalPlan ] {
483+ private val trueValues = Seq (1 .toByte, 1 .toShort, 1 , 1L , Decimal (1 ))
484+ private val falseValues = Seq (0 .toByte, 0 .toShort, 0 , 0L , Decimal (0 ))
485485
486486 private def buildCaseKeyWhen (booleanExpr : Expression , numericExpr : Expression ) = {
487487 CaseKeyWhen (numericExpr, Seq (
@@ -512,22 +512,22 @@ trait HiveTypeCoercion {
512512 // all other cases are considered as false.
513513
514514 // We may simplify the expression if one side is literal numeric values
515- case EqualTo (left @ BooleanType (), Literal (value, _ : NumericType ))
516- if trueValues.contains(value) => left
517- case EqualTo (left @ BooleanType (), Literal (value, _ : NumericType ))
518- if falseValues.contains(value) => Not (left )
519- case EqualTo (Literal (value, _ : NumericType ), right @ BooleanType ())
520- if trueValues.contains(value) => right
521- case EqualTo (Literal (value, _ : NumericType ), right @ BooleanType ())
522- if falseValues.contains(value) => Not (right )
523- case EqualNullSafe (left @ BooleanType (), Literal (value, _ : NumericType ))
524- if trueValues.contains(value) => And (IsNotNull (left ), left )
525- case EqualNullSafe (left @ BooleanType (), Literal (value, _ : NumericType ))
526- if falseValues.contains(value) => And (IsNotNull (left ), Not (left ))
527- case EqualNullSafe (Literal (value, _ : NumericType ), right @ BooleanType ())
528- if trueValues.contains(value) => And (IsNotNull (right ), right )
529- case EqualNullSafe (Literal (value, _ : NumericType ), right @ BooleanType ())
530- if falseValues.contains(value) => And (IsNotNull (right ), Not (right ))
515+ case EqualTo (bool @ BooleanType (), Literal (value, _ : NumericType ))
516+ if trueValues.contains(value) => bool
517+ case EqualTo (bool @ BooleanType (), Literal (value, _ : NumericType ))
518+ if falseValues.contains(value) => Not (bool )
519+ case EqualTo (Literal (value, _ : NumericType ), bool @ BooleanType ())
520+ if trueValues.contains(value) => bool
521+ case EqualTo (Literal (value, _ : NumericType ), bool @ BooleanType ())
522+ if falseValues.contains(value) => Not (bool )
523+ case EqualNullSafe (bool @ BooleanType (), Literal (value, _ : NumericType ))
524+ if trueValues.contains(value) => And (IsNotNull (bool ), bool )
525+ case EqualNullSafe (bool @ BooleanType (), Literal (value, _ : NumericType ))
526+ if falseValues.contains(value) => And (IsNotNull (bool ), Not (bool ))
527+ case EqualNullSafe (Literal (value, _ : NumericType ), bool @ BooleanType ())
528+ if trueValues.contains(value) => And (IsNotNull (bool ), bool )
529+ case EqualNullSafe (Literal (value, _ : NumericType ), bool @ BooleanType ())
530+ if falseValues.contains(value) => And (IsNotNull (bool ), Not (bool ))
531531
532532 case EqualTo (left @ BooleanType (), right @ NumericType ()) =>
533533 transform(left , right)
0 commit comments