@@ -172,17 +172,6 @@ case class Or(left: Expression, right: Expression)
172172abstract class BinaryComparison extends BinaryExpression with Predicate {
173173 self : Product =>
174174
175- override def checkInputDataTypes : TypeCheckResult = {
176- if (left.dataType != right.dataType) {
177- TypeCheckResult .fail(
178- s " differing types in BinaryComparisons -- ${left.dataType}, ${right.dataType}" )
179- } else {
180- checkTypesInternal(left.dataType)
181- }
182- }
183-
184- protected def checkTypesInternal (t : DataType ): TypeCheckResult = TypeCheckResult .success
185-
186175 override def eval (input : Row ): Any = {
187176 val evalE1 = left.eval(input)
188177 if (evalE1 == null ) {
@@ -231,8 +220,10 @@ case class EqualNullSafe(left: Expression, right: Expression) extends BinaryComp
231220case class LessThan (left : Expression , right : Expression ) extends BinaryComparison {
232221 override def symbol : String = " <"
233222
234- override protected def checkTypesInternal (t : DataType ) = {
235- if (TypeUtils .validForOrderingExpr(t)) {
223+ override def checkInputDataTypes : TypeCheckResult = {
224+ if (left.dataType != right.dataType) {
225+ TypeCheckResult .fail(" types do not match -- ${left.dataType} != ${right.dataType}" )
226+ } else if (TypeUtils .validForOrderingExpr(left.dataType)) {
236227 TypeCheckResult .success
237228 } else {
238229 TypeCheckResult .fail(" todo" )
@@ -247,8 +238,10 @@ case class LessThan(left: Expression, right: Expression) extends BinaryCompariso
247238case class LessThanOrEqual (left : Expression , right : Expression ) extends BinaryComparison {
248239 override def symbol : String = " <="
249240
250- override protected def checkTypesInternal (t : DataType ) = {
251- if (TypeUtils .validForOrderingExpr(t)) {
241+ override def checkInputDataTypes : TypeCheckResult = {
242+ if (left.dataType != right.dataType) {
243+ TypeCheckResult .fail(" types do not match -- ${left.dataType} != ${right.dataType}" )
244+ } else if (TypeUtils .validForOrderingExpr(left.dataType)) {
252245 TypeCheckResult .success
253246 } else {
254247 TypeCheckResult .fail(" todo" )
@@ -263,8 +256,10 @@ case class LessThanOrEqual(left: Expression, right: Expression) extends BinaryCo
263256case class GreaterThan (left : Expression , right : Expression ) extends BinaryComparison {
264257 override def symbol : String = " >"
265258
266- override protected def checkTypesInternal (t : DataType ) = {
267- if (TypeUtils .validForOrderingExpr(t)) {
259+ override def checkInputDataTypes : TypeCheckResult = {
260+ if (left.dataType != right.dataType) {
261+ TypeCheckResult .fail(" types do not match -- ${left.dataType} != ${right.dataType}" )
262+ } else if (TypeUtils .validForOrderingExpr(left.dataType)) {
268263 TypeCheckResult .success
269264 } else {
270265 TypeCheckResult .fail(" todo" )
@@ -279,8 +274,10 @@ case class GreaterThan(left: Expression, right: Expression) extends BinaryCompar
279274case class GreaterThanOrEqual (left : Expression , right : Expression ) extends BinaryComparison {
280275 override def symbol : String = " >="
281276
282- override protected def checkTypesInternal (t : DataType ) = {
283- if (TypeUtils .validForOrderingExpr(t)) {
277+ override def checkInputDataTypes : TypeCheckResult = {
278+ if (left.dataType != right.dataType) {
279+ TypeCheckResult .fail(" types do not match -- ${left.dataType} != ${right.dataType}" )
280+ } else if (TypeUtils .validForOrderingExpr(left.dataType)) {
284281 TypeCheckResult .success
285282 } else {
286283 TypeCheckResult .fail(" todo" )
0 commit comments