Reverted: Bug SQL Count Distinct command in GenericDAO.java
(OFBIZ-5701)
Reverts
trunk r1804319
R16.11 r1804320
R15.12 r1804321
R14.12 r1804322
R13.07 r1804323
This raised 2 issues:
MSSQL as reported by Wei Zhang in OFBIZ-9676
Dynamic View Entities as reported by Pawan Verma in OFBIZ-5701
I asked kieuanhvu to see if he can provide a new patch taking these 2 issues in
consideration
git-svn-id: https://svn.apache.org/repos/asf/ofbiz/branches/release14.12@1810054 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java b/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
index 6d6d723..c7e41a1 100644
--- a/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
+++ b/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
@@ -1024,7 +1024,6 @@
}
boolean isGroupBy = false;
- boolean isCountGroup = false;
ModelViewEntity modelViewEntity = null;
if (modelEntity instanceof ModelViewEntity) {
modelViewEntity = (ModelViewEntity) modelEntity;
@@ -1055,20 +1054,11 @@
// if the field has a function already we don't want to count just it, would be meaningless
sqlBuffer.append("COUNT(DISTINCT *) ");
} else {
- isCountGroup = true;
- StringBuilder sqlBufferTMP = new StringBuilder("SELECT COUNT(*) FROM(");
- sqlBuffer.append("DISTINCT ");
- for (int i = 0; i < selectFields.size() - 1; i++) {
- ModelViewEntity.ModelAlias tmpMA = modelViewEntity != null ? modelViewEntity.getAlias(selectFields.get(i).getName()) : null;
- if (tmpMA != null && !tmpMA.getColAlias().isEmpty()) {
- sqlBuffer.append(selectFields.get(i).getColValue() + " as " + tmpMA.getColAlias() + ",");
- } else {
- sqlBuffer.append(selectFields.get(i).getColValue() + ",");
- }
- }
- sqlBuffer.append(selectFields.get(selectFields.size() - 1).getColValue());
- sqlBufferTMP.append(sqlBuffer);
- sqlBuffer = sqlBufferTMP;
+ sqlBuffer.append("COUNT(DISTINCT ");
+ // this only seems to support a single column, which is not desirable but seems a lot better than no columns or in certain cases all columns
+ sqlBuffer.append(firstSelectField.getColValue());
+ // sqlBuffer.append(modelEntity.colNameString(selectFields, ", ", "", datasource.aliasViews));
+ sqlBuffer.append(")");
}
} else {
sqlBuffer.append("COUNT(DISTINCT *) ");
@@ -1108,9 +1098,6 @@
if (isGroupBy) {
sqlBuffer.append(") TEMP_NAME");
}
- if (isCountGroup) {
- sqlBuffer.append(") TEMP_COUNT_NAME");
- }
String sql = sqlBuffer.toString();
if (Debug.verboseOn()) Debug.logVerbose("Count select sql: " + sql, module);