This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 35675565d9aa3ff53168587fa946851b99353f9b Author: Andrus Adamchik <[email protected]> AuthorDate: Mon Jul 6 08:50:19 2026 -0400 CAY-2912 Compact SQL logger proper byte[] param logging --- .../java/org/apache/cayenne/log/SQLBindingRenderer.java | 6 ++++++ .../java/org/apache/cayenne/log/Slf4jSQLLoggerTest.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/cayenne/src/main/java/org/apache/cayenne/log/SQLBindingRenderer.java b/cayenne/src/main/java/org/apache/cayenne/log/SQLBindingRenderer.java index 6a103aa54..409dc460f 100644 --- a/cayenne/src/main/java/org/apache/cayenne/log/SQLBindingRenderer.java +++ b/cayenne/src/main/java/org/apache/cayenne/log/SQLBindingRenderer.java @@ -27,6 +27,7 @@ import org.apache.cayenne.access.translator.TranslatedProcedure; import org.apache.cayenne.access.translator.TranslatedSQL; import org.apache.cayenne.access.translator.TranslatedSelect; import org.apache.cayenne.access.translator.TranslatedStatement; +import org.apache.cayenne.access.types.ByteArrayType; import org.apache.cayenne.access.types.ExtendedType; import java.util.Map; @@ -168,6 +169,11 @@ class SQLBindingRenderer { if (value instanceof Number || value instanceof Boolean) { return value.toString(); } + if (value instanceof byte[] bytes) { + StringBuilder buffer = new StringBuilder(); + ByteArrayType.logBytes(buffer, bytes); + return buffer.toString(); + } return "'" + value + "'"; } } diff --git a/cayenne/src/test/java/org/apache/cayenne/log/Slf4jSQLLoggerTest.java b/cayenne/src/test/java/org/apache/cayenne/log/Slf4jSQLLoggerTest.java index 8b0cbc1e2..0c6853f24 100644 --- a/cayenne/src/test/java/org/apache/cayenne/log/Slf4jSQLLoggerTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/log/Slf4jSQLLoggerTest.java @@ -143,6 +143,21 @@ public class Slf4jSQLLoggerTest { line(logger, batch, "updated:", 1)); } + @Test + public void batchLineRendersByteArrayAsHex() { + PSBatchParameter binId = new PSBatchParameter( + new Object[]{new byte[]{1, 2, (byte) 0xAB}}, 1, Types.BINARY, 0, new DbAttribute("BIN_ID")); + PSBatchParameter name = new PSBatchParameter( + new Object[]{"master1"}, 2, Types.VARCHAR, 0, new DbAttribute("NAME")); + + TranslatedBatch batch = new TranslatedBatch( + "INSERT INTO BINARY_PK_TEST1(BIN_ID, NAME) VALUES(?, ?)", new PSBatchParameter[]{binId, name}); + + assertEquals( + "INSERT INTO BINARY_PK_TEST1(BIN_ID, NAME) VALUES(?, ?) | bind:[BIN_ID:<0102AB>,NAME:'master1'] updated:1", + line(logger, batch, "updated:", 1)); + } + @Test public void batchLineShowsAllRowsBelowThreshold() { PSBatchParameter id = new PSBatchParameter(
