xuzifu666 commented on code in PR #4431:
URL: https://github.com/apache/calcite/pull/4431#discussion_r2176455634


##########
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:
   Yes,literal is not a type. SqlTester itself does not calculate precision, 
but it will call SqlReturnTypeInference##STRING_BYTESTRING_PRECISION to 
calculate precision. It is called twice, once with origin sql, and the result 
calculated by this method is completely correct. Then the second method will be 
called again with a subquery to get another result. Both results need to match 
the test case results to pass. 
   However, if it is (binary, char), the subquery cannot calculate the 
precision correctly, so unless the varbinary type is returned, the results will 
be inconsistent with the normal precision.



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