Skip to content

Commit 27adf42

Browse files
committed
Fix: Operation '>,<,>=,<=' with Decimal report error
1 parent d7fc69a commit 27adf42

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)