Author: gk
Date: Wed May 8 09:16:31 2024
New Revision: 1917567
URL: http://svn.apache.org/viewvc?rev=1917567&view=rev
Log:
Fix TORQUE-365
Fix changes.xml files
Modified:
db/torque/trunk/torque-runtime/src/changes/changes.xml
db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/util/CountHelper.java
db/torque/trunk/torque-runtime/src/test/java/org/apache/torque/criteria/CriteriaTest.java
db/torque/trunk/torque-templates/src/changes/changes.xml
Modified: db/torque/trunk/torque-runtime/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/db/torque/trunk/torque-runtime/src/changes/changes.xml?rev=1917567&r1=1917566&r2=1917567&view=diff
==============================================================================
--- db/torque/trunk/torque-runtime/src/changes/changes.xml (original)
+++ db/torque/trunk/torque-runtime/src/changes/changes.xml Wed May 8 09:16:31
2024
@@ -28,6 +28,9 @@
<action type="update" dev="tv">
Use Charset where appropriate
</action>
+ <action type="fix" dev="mwriedt" issue="TORQUE-365">
+ CountHelper doesn't work, when Criteria has "setDisctint()"
+ </action>
<action type="fix" dev="gk" issue="TORQUE-363">
Criterion "is Null" fix, Thanks for the report to Max Philipp Wriedt.
</action>
Modified:
db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/util/CountHelper.java
URL:
http://svn.apache.org/viewvc/db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/util/CountHelper.java?rev=1917567&r1=1917566&r2=1917567&view=diff
==============================================================================
---
db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/util/CountHelper.java
(original)
+++
db/torque/trunk/torque-runtime/src/main/java/org/apache/torque/util/CountHelper.java
Wed May 8 09:16:31 2024
@@ -30,6 +30,7 @@ package org.apache.torque.util;
*/
import java.sql.Connection;
import java.util.List;
+import java.util.Objects;
import org.apache.torque.Column;
import org.apache.torque.ColumnImpl;
@@ -199,7 +200,8 @@ public class CountHelper
UniqueList<String> criteriaSelectModifiers
= c.getSelectModifiers();
- boolean distinct = isAndSetDistinct(criteriaSelectModifiers);
+ // COUNT(DISTINCT *) would be not valid SQL, exclude *
+ boolean distinct = isAndSetDistinct(criteriaSelectModifiers) &&
!Objects.equals(columnName, "*");
c.addSelectColumn(new Count(new ColumnImpl(columnName), distinct));
Modified:
db/torque/trunk/torque-runtime/src/test/java/org/apache/torque/criteria/CriteriaTest.java
URL:
http://svn.apache.org/viewvc/db/torque/trunk/torque-runtime/src/test/java/org/apache/torque/criteria/CriteriaTest.java?rev=1917567&r1=1917566&r2=1917567&view=diff
==============================================================================
---
db/torque/trunk/torque-runtime/src/test/java/org/apache/torque/criteria/CriteriaTest.java
(original)
+++
db/torque/trunk/torque-runtime/src/test/java/org/apache/torque/criteria/CriteriaTest.java
Wed May 8 09:16:31 2024
@@ -27,6 +27,7 @@ import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.torque.BaseTestCase;
@@ -40,7 +41,9 @@ import org.apache.torque.map.TableMap;
import org.apache.torque.sql.OrderBy;
import org.apache.torque.sql.Query;
import org.apache.torque.sql.SqlBuilder;
+import org.apache.torque.util.CountHelper;
import org.apache.torque.util.UniqueList;
+import org.apache.torque.util.functions.Count;
import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -690,6 +693,37 @@ public class CriteriaTest extends BaseTe
= result.getPreparedStatementReplacements();
assertEquals(0, preparedStatementReplacements.size());
}
+
+ @Test
+ public void testDistinctCount() throws TorqueException
+ {
+ // distinct without count
+ c.where(new ColumnImpl("TABLE", "COLUMN"),SqlEnum.ISNOTNULL );
+ c.addSelectColumn(new ColumnImpl("TABLE", "COLUMN"));
+ c.setDistinct();
+
+ Query result = SqlBuilder.buildQuery(c);
+ assertEquals(
+ "SELECT DISTINCT TABLE.COLUMN FROM TABLE WHERE "
+ + "TABLE.COLUMN IS NOT NULL",
+ result.toString());
+
+ // now check distinct with count
+ // use case would be:
+ // CountHelper ch = new CountHelper();
+ // int count = ch.count( c ) -> sets columnName to *
+
+ /* Clear the select columns. */
+ c.getSelectColumns().clear();
+ // COUNT(DISTINCT *) would be not valid SQL, exclude if columnName = *
+ boolean distinct = false;
+ c.addSelectColumn(new Count(new ColumnImpl("*"), distinct));
+ Query result2 = SqlBuilder.buildQuery(c);
+ assertEquals(
+ "SELECT DISTINCT COUNT(*) FROM TABLE WHERE "
+ + "TABLE.COLUMN IS NOT NULL",
+ result2.toString());
+ }
@Test
public void testAndCurrentTime() throws TorqueException
Modified: db/torque/trunk/torque-templates/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/db/torque/trunk/torque-templates/src/changes/changes.xml?rev=1917567&r1=1917566&r2=1917567&view=diff
==============================================================================
--- db/torque/trunk/torque-templates/src/changes/changes.xml (original)
+++ db/torque/trunk/torque-templates/src/changes/changes.xml Wed May 8
09:16:31 2024
@@ -24,7 +24,7 @@
<body>
<release version="5.2-SNAPSHOT" date="in SVN">
- <action type="fix" issue="TORQUE-364" dev="mwriedt" date="2024-05-06">
+ <action type="fix" issue="TORQUE-364" dev="mwriedt" date="2024-05-06"
due-to="Rene Fabian Reichow">
Improve RecordMapper on many columns in table Add generated static
variable for sql expressions, add set to optimize loop in processRow method.
</action>
<action type="update" dev="gk" date="2024-04-28">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]