Github user gatorsmile commented on a diff in the pull request: https://github.com/apache/spark/pull/23197#discussion_r238110847 --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala --- @@ -119,14 +121,26 @@ object TypeCoercion { * other is a Timestamp by making the target type to be String. */ private def findCommonTypeForBinaryComparison( - dt1: DataType, dt2: DataType, conf: SQLConf): Option[DataType] = (dt1, dt2) match { - // We should cast all relative timestamp/date/string comparison into string comparisons - // This behaves as a user would expect because timestamp strings sort lexicographically. - // i.e. TimeStamp(2013-01-01 00:00 ...) < "2014" = true + left: Expression, + right: Expression, + conf: SQLConf): Option[DataType] = (left.dataType, right.dataType) match { + // We should cast all relative timestamp/date/string comparison into string comparisons only if + // the particular literal value cannot been converted into a valid Timestamp/Date. If the value + // can be converted into a valid TimeStamp/Date then we cast the right side literal value to + // 'Timestamp'/'Date', for more details refer the description provided in stringToTimestamp() + // method. --- End diff -- We will not change the existing Type Coercion rules in the current stage. We plan to re-visit the whole type coercion rules by following some other systems, e.g., PostgreSQL
--- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org