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]