ILuffZhe commented on code in PR #3558:
URL: https://github.com/apache/calcite/pull/3558#discussion_r1874370117


##########
core/src/test/java/org/apache/calcite/test/JdbcTest.java:
##########
@@ -6827,6 +6827,35 @@ private void checkGetTimestamp(Connection con) throws 
SQLException {
             "Cannot apply = to the two different charsets ISO-8859-1 and 
UTF-16LE");
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-6146";>[CALCITE-6146]
+   * Target charset should be used when comparing two strings through
+   * CONVERT/TRANSLATE function during validation</a>. */
+  @Test void testStringComparisonWithConvertFunc() {
+    CalciteAssert.AssertThat with = CalciteAssert.hr();
+    with.query("select \"name\", \"empid\" from \"hr\".\"emps\"\n"
+        + "where convert(\"name\" using GBK)=_GBK'Eric'")
+        .returns("name=Eric; empid=200\n");
+    with.query("select \"name\", \"empid\" from \"hr\".\"emps\"\n"
+        + "where _BIG5'Eric'=translate(\"name\" using BIG5)")
+        .returns("name=Eric; empid=200\n");
+    with.query("select \"name\", \"empid\" from \"hr\".\"emps\"\n"
+        + "where convert(convert(\"name\" using GBK) using BIG5)=_BIG5'Eric'")
+        .returns("name=Eric; empid=200\n");
+    // the charset of char(5) is ISO-8859-1 preserved in Collate
+    with.query("select \"name\", \"empid\" from \"hr\".\"emps\"\n"
+        + "where cast(convert(\"name\" using GBK) as char(5))=_BIG5'Eric'")
+        .throws_(
+            "Cannot apply = to the two different charsets ISO-8859-1 and 
Big5");

Review Comment:
   > I know you didn't write this error message, but I think it can be 
improved. I would write "Cannot apply operation '=' to strings with different 
charsets 'ISO-8859-1' and 'Big5'`
   
   Agreed, and I've changed the message.



-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to