Skip to content

Commit

Permalink
[CALCITE-3251] BinaryExpression evaluate method support full numeric
Browse files Browse the repository at this point in the history
types in Primitive (xy2953396112)

Before this patch, BinaryExpression#evaludate only supports INT and
DOUBLE type, this also remove some useless code in ExpressionTest.

close #1379
close #1389
  • Loading branch information
xy2953396112 authored and danny0405 committed Aug 21, 2019
1 parent beeb012 commit 5a42812
Show file tree
Hide file tree
Showing 2 changed files with 309 additions and 6 deletions.
Expand Up @@ -58,9 +58,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator) + (Integer) expression1
.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator) + (Short) expression1
.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator) + (Byte) expression1
.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator) + (Float) expression1
.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
+ (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
+ (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand All @@ -69,9 +81,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator) / (Integer) expression1
.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator) / (Short) expression1
.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator) / (Byte) expression1
.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator) / (Float) expression1
.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
/ (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
/ (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand All @@ -83,9 +107,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator) > (Integer) expression1
.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator) > (Short) expression1
.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator) > (Byte) expression1
.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator) > (Float) expression1
.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
> (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
> (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand All @@ -94,9 +130,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator)
>= (Integer) expression1.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator)
>= (Short) expression1.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator)
>= (Byte) expression1.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator)
>= (Float) expression1.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
>= (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
>= (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand All @@ -105,9 +153,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator) < (Integer) expression1
.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator) < (Short) expression1
.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator) < (Byte) expression1
.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator) < (Float) expression1
.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
< (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
< (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand All @@ -116,9 +176,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator)
<= (Integer) expression1.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator)
<= (Short) expression1.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator)
<= (Byte) expression1.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator)
<= (Float) expression1.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
<= (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
<= (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand All @@ -127,9 +199,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator) * (Integer) expression1
.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator) * (Short) expression1
.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator) * (Byte) expression1
.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator) * (Float) expression1
.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
* (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
* (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand All @@ -144,9 +228,21 @@ public Object evaluate(Evaluator evaluator) {
case INT:
return (Integer) expression0.evaluate(evaluator) - (Integer) expression1
.evaluate(evaluator);
case SHORT:
return (Short) expression0.evaluate(evaluator) - (Short) expression1
.evaluate(evaluator);
case BYTE:
return (Byte) expression0.evaluate(evaluator) - (Byte) expression1
.evaluate(evaluator);
case FLOAT:
return (Float) expression0.evaluate(evaluator) - (Float) expression1
.evaluate(evaluator);
case DOUBLE:
return (Double) expression0.evaluate(evaluator)
- (Double) expression1.evaluate(evaluator);
case LONG:
return (Long) expression0.evaluate(evaluator)
- (Long) expression1.evaluate(evaluator);
default:
throw cannotEvaluate();
}
Expand Down

0 comments on commit 5a42812

Please sign in to comment.