Skip to content

Commit 83ec129

Browse files
committed
Remove intervalMethod.
1 parent acfe1ab commit 83ec129

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,6 @@ abstract class BinaryArithmetic extends BinaryOperator {
8888
def decimalMethod: String =
8989
sys.error("BinaryArithmetics must override either decimalMethod or genCode")
9090

91-
/** Name of the function for this expression on a [[Interval]] type. */
92-
def intervalMethod: String =
93-
sys.error("BinaryArithmetics must override either intervalMethod or genCode")
94-
9591
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): String = dataType match {
9692
case dt: DecimalType =>
9793
defineCodeGen(ctx, ev, (eval1, eval2) => s"$eval1.$decimalMethod($eval2)")
@@ -100,7 +96,7 @@ abstract class BinaryArithmetic extends BinaryOperator {
10096
defineCodeGen(ctx, ev,
10197
(eval1, eval2) => s"(${ctx.javaType(dataType)})($eval1 $symbol $eval2)")
10298
case IntervalType =>
103-
defineCodeGen(ctx, ev, (eval1, eval2) => s"$eval1.$intervalMethod($eval2)")
99+
defineCodeGen(ctx, ev, (eval1, eval2) => s"""$eval1.doOp($eval2, "$symbol")""")
104100
case _ =>
105101
defineCodeGen(ctx, ev, (eval1, eval2) => s"$eval1 $symbol $eval2")
106102
}
@@ -113,7 +109,6 @@ private[sql] object BinaryArithmetic {
113109
case class Add(left: Expression, right: Expression) extends BinaryArithmetic {
114110
override def symbol: String = "+"
115111
override def decimalMethod: String = "$plus"
116-
override def intervalMethod: String = "add"
117112

118113
override lazy val resolved =
119114
childrenResolved && checkInputDataTypes().isSuccess && !DecimalType.isFixed(dataType)
@@ -135,7 +130,6 @@ case class Add(left: Expression, right: Expression) extends BinaryArithmetic {
135130
case class Subtract(left: Expression, right: Expression) extends BinaryArithmetic {
136131
override def symbol: String = "-"
137132
override def decimalMethod: String = "$minus"
138-
override def intervalMethod: String = "subtract"
139133

140134
override lazy val resolved =
141135
childrenResolved && checkInputDataTypes().isSuccess && !DecimalType.isFixed(dataType)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ class ExpressionTypeCheckingSuite extends SparkFunSuite {
7878
assertErrorForDifferingTypes(MaxOf('intField, 'booleanField))
7979
assertErrorForDifferingTypes(MinOf('intField, 'booleanField))
8080

81-
assertError(Add('booleanField, 'booleanField), "operator + accepts numeric type")
82-
assertError(Subtract('booleanField, 'booleanField), "operator - accepts numeric type")
81+
assertError(Add('booleanField, 'booleanField), "operator + accepts numeric or interval types")
82+
assertError(Subtract('booleanField, 'booleanField), "operator - accepts numeric or interval types")
8383
assertError(Multiply('booleanField, 'booleanField), "operator * accepts numeric type")
8484
assertError(Divide('booleanField, 'booleanField), "operator / accepts numeric type")
8585
assertError(Remainder('booleanField, 'booleanField), "operator % accepts numeric type")

unsafe/src/main/java/org/apache/spark/unsafe/types/Interval.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,19 @@ public Interval(int months, long microseconds) {
8686
this.microseconds = microseconds;
8787
}
8888

89+
public Interval doOp(Interval that, String op) {
90+
Interval opRet = null;
91+
switch (op) {
92+
case "+":
93+
opRet = add(that);
94+
break;
95+
case "-":
96+
opRet = subtract(that);
97+
break;
98+
}
99+
return opRet;
100+
}
101+
89102
public Interval add(Interval that) {
90103
int months = this.months + that.months;
91104
long microseconds = this.microseconds + that.microseconds;

0 commit comments

Comments
 (0)