From c48e5428c5801f94ee925adaee5103de6d4795c5 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Tue, 21 Nov 2023 22:32:35 +1300 Subject: [PATCH] #3265 Fix for Update Query logging to trim large values in bind log --- .../java/io/ebeaninternal/server/persist/Binder.java | 6 +++++- .../src/test/java/org/tests/basic/TestUpdate.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java index 0021c9a12..304f163b8 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java @@ -119,7 +119,11 @@ public final class Binder { if (param.isEncryptionKey()) { bindLog.append("****"); } else { - bindLog.append(value); + String sv = String.valueOf(value); + if (sv.length() > 50) { + sv = sv.substring(0, 47) + "..."; + } + bindLog.append(sv); } } if (value instanceof Collection) { diff --git a/ebean-test/src/test/java/org/tests/basic/TestUpdate.java b/ebean-test/src/test/java/org/tests/basic/TestUpdate.java index d7973ca59..5f6e9aa43 100644 --- a/ebean-test/src/test/java/org/tests/basic/TestUpdate.java +++ b/ebean-test/src/test/java/org/tests/basic/TestUpdate.java @@ -1,8 +1,8 @@ package org.tests.basic; -import io.ebean.xtest.BaseTestCase; import io.ebean.DB; import io.ebean.Update; +import io.ebean.xtest.BaseTestCase; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -10,6 +10,7 @@ import org.tests.model.basic.Customer; import org.tests.model.basic.ResetBasicData; import java.util.Arrays; +import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -37,13 +38,17 @@ public class TestUpdate extends BaseTestCase { @Test public void testNormal() { + String sillyContent = "a123456789b123456789c123456789d123456789e123456789"; for (int i = 1; i <= 3; i++) { Update update = DB.createUpdate(Customer.class, "update customer set smallnote = :smallnote where name in (:name)"); - update.setParameter("name", Arrays.asList("testUpdate" + i)).setParameter("smallnote", "Note #" + i).execute(); + update + .setParameter("name", List.of("testUpdate" + i)) + .setParameter("smallnote", "Note #" + i + sillyContent) + .execute(); } Customer cust = DB.find(Customer.class).where().eq("name", "testUpdate3").findOne(); - assertThat(cust.getSmallnote()).isEqualTo("Note #3"); + assertThat(cust.getSmallnote()).isEqualTo("Note #3" + sillyContent); } @Test