OPENJPA-2861 add unit tests for select sum(case..)
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 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 @@
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 @@
*/
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() {