This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit bb5503b1471b5ce5a2969d12451eced8c0c65b19
Author: Mark Struberg <strub...@apache.org>
AuthorDate: Tue Apr 6 20:01:59 2021 +0200

    OPENJPA-2861 add unit tests for select sum(case..)
---
 .../openjpa/jira1794/TestAggregateFunctions.java   | 35 ++++++++++++++++++++++
 .../jdbc/query/TestAggregateQueryWithNoResult.java |  8 ++---
 2 files changed, 39 insertions(+), 4 deletions(-)

diff --git 
a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java
 
b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java
index 13a6b0d..b1cb054 100644
--- 
a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java
+++ 
b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java
@@ -22,6 +22,7 @@ import java.util.List;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import javax.persistence.TypedQuery;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Expression;
@@ -92,6 +93,40 @@ public class TestAggregateFunctions extends 
SingleEMFTestCase {
         em.close();
     }
 
+    /**
+     * if a SUM(CASE statement is used, then the effective type might be 
different
+     */
+    public void testAggregateWithCase() {
+        EntityManager em = emf.createEntityManager();
+
+        // Add a row to the table and re-test
+        em.getTransaction().begin();
+        AggEntity ae = new AggEntity();
+        ae.init();
+        ae.setStringVal("bare");
+        em.persist(ae);
+        AggEntity ae2 = new AggEntity();
+        ae2.init();
+        ae2.setStringVal("foot");
+        em.persist(ae2);
+        em.getTransaction().commit();
+
+/*X
+        em.getTransaction().begin();
+        final TypedQuery<Long> q2 = em.createQuery("select SUM(ae.intVal) from 
AggEntity AS ae", Long.class);
+        final Long sum = q2.getSingleResult();
+        assertEquals(2L, (long) sum);
+*/
+
+        final TypedQuery<Long> q = em.createQuery("select SUM(CASE 
ae.stringVal WHEN 'bare' THEN 1 ELSE 0 END) from AggEntity AS ae", Long.class);
+        final Long sumC = q.getSingleResult();
+        assertEquals(1L, (long) sumC);
+
+        em.getTransaction().commit();
+
+        em.close();
+    }
+
     public void testAggregateCriteria() {
         EntityManager em = emf.createEntityManager();
         Metamodel mm = emf.getMetamodel();
diff --git 
a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestAggregateQueryWithNoResult.java
 
b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestAggregateQueryWithNoResult.java
index 104a32f..febefb0 100644
--- 
a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestAggregateQueryWithNoResult.java
+++ 
b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/query/TestAggregateQueryWithNoResult.java
@@ -37,15 +37,15 @@ import 
org.apache.openjpa.persistence.test.SingleEMFTestCase;
  */
 public class TestAggregateQueryWithNoResult extends SingleEMFTestCase {
     EntityManager em;
-       @Override
+
+    @Override
     public void setUp() {
         super.setUp(CLEAR_TABLES,
                 "openjpa.Compatibility", "ReturnNullOnAggregateResult=false",  
//OPENJPA-1794
-                Game.class, IndoorGame.class, Scrabble.class,
-                               Chess.class);
+                Game.class, IndoorGame.class, Scrabble.class, Chess.class);
         em = emf.createEntityManager();
         assertTrue(em.createQuery("select p from Scrabble 
p").getResultList().isEmpty());
-       }
+    }
 
 
     public void testSumWithNoResult() {

Reply via email to