You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by GitBox <gi...@apache.org> on 2020/06/15 12:10:21 UTC

[GitHub] [calcite] danny0405 commented on a change in pull request #1990: [CALCITE-4026] CassandraFilter has generated wrong condition expression for filter with non string literal

danny0405 commented on a change in pull request #1990:
URL: https://github.com/apache/calcite/pull/1990#discussion_r440130136



##########
File path: cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraFilter.java
##########
@@ -174,14 +180,26 @@ private String translateMatch(RexNode condition) {
       }
     }
 
-    /** Convert the value of a literal to a string.
+    /** Returns the value of the literal.
      *
      * @param literal Literal to translate
-     * @return String representation of the literal
+     * @return The value of the literal in the form of the actual type.
      */
-    private static String literalValue(RexLiteral literal) {
-      Object value = literal.getValue2();
-      return String.valueOf(value);
+    private static Object literalValue(RexLiteral literal) {
+      Comparable value = RexLiteral.value(literal);
+      switch (literal.getTypeName()) {
+      case TIMESTAMP:
+      case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
+        assert value instanceof TimestampString;
+        final SimpleDateFormat dateFormatter =
+            getDateFormatter(TIMESTAMP_FORMAT_STRING2);
+        return dateFormatter.format(literal.getValue2());
+      case DATE:
+        assert value instanceof DateString;
+        return value.toString();
+      default:
+        return literal.getValue3();
+      }

Review comment:
       Why change from `getValue2()` to `getValue3()` ?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org