This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch STABLE-4.2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 564d1f30aee05c0f3409b968f0f24d7abd18e04a Author: Jurgen <5031427+ju...@users.noreply.github.com> AuthorDate: Sun Apr 14 09:39:53 2024 +0200 Fix CLOB empty String comparison (cherry picked from commit 229544fc44956aa474456a7cb2894367b0697a01) --- .../cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java | 3 ++- .../test/java/org/apache/cayenne/query/SelectQueryClobIT.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java index 2e9e68ef1..b856e6be1 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java @@ -144,7 +144,8 @@ public class TrimmingColumnNode extends Node { } if(sibling.getType() == NodeType.VALUE) { if(((ValueNode)sibling).getValue() instanceof CharSequence) { - return ((CharSequence) ((ValueNode)sibling).getValue()).length(); + int valLen = ((CharSequence) ((ValueNode)sibling).getValue()).length(); + return Math.max(1, valLen); } } } diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java index b182fb575..8379832ba 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java @@ -109,4 +109,15 @@ public class SelectQueryClobIT extends ServerCase { assertEquals(1, objects.size()); } } + + @Test + public void testSelectNotEqualsEmptyClob() throws Exception { + if (accessStackAdapter.supportsLobComparisons()) { + createClobDataSet(); + List<?> objects = ObjectSelect.query(ClobTestEntity.class) + .where(ClobTestEntity.CLOB_COL.ne("")) + .select(context); + assertEquals(2, objects.size()); + } + } } \ No newline at end of file