xuzifu666 commented on code in PR #4431:
URL: https://github.com/apache/calcite/pull/4431#discussion_r2176426299
##########
testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java:
##########
@@ -2545,6 +2545,30 @@ void testCastToBoolean(CastType castType,
SqlOperatorFixture f) {
f.checkNull("cast(null as integer array) || array[1]");
}
+ /** Test case for <a
href="https://issues.apache.org/jira/browse/CALCITE-7063">
+ * Result type inferred for CONCAT_FUNCTION is incorrect for BINARY
arguments</a>. */
+ @Test void testConcatFuncMysql() {
+ final SqlOperatorFixture f = fixture().withLibrary(SqlLibrary.MYSQL);
+
+ // test for ByteString
+ f.setFor(SqlLibraryOperators.CONCAT_FUNCTION_MYSQL);
+ f.checkString("concat('a', x'61')", "6161", "BINARY(2) NOT NULL");
+ f.checkString("concat('abc', 'bb', 'cc')", "abcbbcc", "VARCHAR(7) NOT
NULL");
+ f.checkString("concat(x'616263',x'62')", "61626362", "BINARY(4) NOT NULL");
+ f.checkString("concat(x'616263','abc')", "616263616263", "BINARY(6) NOT
NULL");
+ f.checkString("concat(x'61',x'62')", "6162", "BINARY(2) NOT NULL");
+ f.checkString("concat(cast(x'61' as binary), cast(x'62' as binary), "
Review Comment:
I am not sure if I have expressed it clearly, but this test case will
execute two statements:
One is the origin sql, which is fine and can match binary(10) normally.
However, SqlTester is still trying to determine the second subquery case. Since
it is not literal, the result will not be consistent with binary(10).
This is what I found during debugging. This is why other function tests do
not have this problem, because other functions do not have mixed types and only
need to add precision directly according to data type. In this way, the second
subquery verification can pass normally.
--
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]