@@ -361,6 +361,19 @@ trait HiveTypeCoercion {
361361 DecimalType (min(p1 - s1, p2 - s2) + max(s1, s2), max(s1, s2))
362362 )
363363
364+ // Cast is no need for logical operator
365+ case LessThan (e1 @ DecimalType .Expression (p1, s1), e2 @ DecimalType .Expression (p2, s2)) =>
366+ GreaterThan (Cast (e1, DecimalType .Unlimited ), Cast (e2, DecimalType .Unlimited ))
367+
368+ case LessThanOrEqual (e1 @ DecimalType .Expression (p1, s1), e2 @ DecimalType .Expression (p2, s2)) =>
369+ GreaterThan (Cast (e1, DecimalType .Unlimited ), Cast (e2, DecimalType .Unlimited ))
370+
371+ case GreaterThan (e1 @ DecimalType .Expression (p1, s1), e2 @ DecimalType .Expression (p2, s2)) =>
372+ GreaterThan (Cast (e1, DecimalType .Unlimited ), Cast (e2, DecimalType .Unlimited ))
373+
374+ case GreaterThanOrEqual (e1 @ DecimalType .Expression (p1, s1), e2 @ DecimalType .Expression (p2, s2)) =>
375+ GreaterThan (Cast (e1, DecimalType .Unlimited ), Cast (e2, DecimalType .Unlimited ))
376+
364377 // Promote integers inside a binary expression with fixed-precision decimals to decimals,
365378 // and fixed-precision decimals in an expression with floats / doubles to doubles
366379 case b : BinaryExpression if b.left.dataType != b.right.dataType =>
0 commit comments