Skip to content

Commit 7b35ed2

Browse files
author
aokolnychyi
committed
[SPARK-21332][SQL] Fix the incorrect result type inferred for some decimal expressions
1 parent 08e0d03 commit 7b35ed2

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ object DecimalPrecision extends Rule[LogicalPlan] {
8080

8181
def apply(plan: LogicalPlan): LogicalPlan = plan resolveOperators {
8282
// fix decimal precision for expressions
83-
case q => q.transformExpressions(
83+
case q => q.transformExpressionsUp(
8484
decimalAndDecimal.orElse(integralAndDecimalLiteral).orElse(nondecimalAndDecimal))
8585
}
8686

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/DecimalPrecisionSuite.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,14 @@ class DecimalPrecisionSuite extends AnalysisTest with BeforeAndAfter {
9090
checkType(Average(d1), DecimalType(6, 5))
9191

9292
checkType(Add(Add(d1, d2), d1), DecimalType(7, 2))
93+
checkType(Add(Add(d1, d1), d1), DecimalType(4, 1))
94+
checkType(Add(d1, Add(d1, d1)), DecimalType(4, 1))
9395
checkType(Add(Add(Add(d1, d2), d1), d2), DecimalType(8, 2))
9496
checkType(Add(Add(d1, d2), Add(d1, d2)), DecimalType(7, 2))
97+
checkType(Subtract(Subtract(d2, d1), d1), DecimalType(7, 2))
98+
checkType(Multiply(Multiply(d1, d1), d2), DecimalType(11, 4))
99+
checkType(Divide(d2, Add(d1, d1)), DecimalType(10, 6))
100+
checkType(Sum(Add(d1, d1)), DecimalType(13, 1))
95101
}
96102

97103
test("Comparison operations") {

0 commit comments

Comments
 (0)