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

Reply via email to