sknop commented on a change in pull request #9950:
URL: https://github.com/apache/kafka/pull/9950#discussion_r579839255
##########
File path:
connect/transforms/src/main/java/org/apache/kafka/connect/transforms/Cast.java
##########
@@ -364,11 +365,24 @@ private static String castToString(Object value) {
if (value instanceof java.util.Date) {
java.util.Date dateValue = (java.util.Date) value;
return Values.dateFormatFor(dateValue).format(dateValue);
+ } else if (value instanceof ByteBuffer) {
+ ByteBuffer byteBuffer = (ByteBuffer) value;
+ return castByteArrayToString(byteBuffer.array());
+ } else if (value instanceof byte[]) {
+ return castByteArrayToString((byte[]) value);
} else {
return value.toString();
}
}
+ private static String castByteArrayToString(byte[] array) {
+ StringBuilder sbuf = new StringBuilder();
+ for (byte b : array) {
+ sbuf.append(String.format("%02X", b));
Review comment:
The reason I suggested Hex representation was that in the use case I
encountered - database PK field encoded as BINARY retrieved via CDC Source
Connector - the representation in the SQL CLI was Hex, so choosing the same
format made it easy to compare source and target.
I would suggest that base64 encoding would validate its own dedicated
transformer, with an ability to choose padding, for example
----------------------------------------------------------------
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:
[email protected]