Author: adrianc Date: Mon May 27 09:49:02 2013 New Revision: 1486552 URL: http://svn.apache.org/r1486552 Log: Entity engine optimization: Use SELECT * when the fields to select have not been specified.
There was some code to check for this, but it was testing a "fields to select" List that was never empty, so SELECT * was never used. Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java?rev=1486552&r1=1486551&r2=1486552&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java Mon May 27 09:49:02 2013 @@ -707,8 +707,6 @@ public class GenericDAO { Debug.logInfo("[" + modelEntity.getEntityName() + "]: auto-added field-sets: " + reasonSets, module); } } - } else { - selectFields = modelEntity.getFieldsUnmodifiable(); } StringBuilder sqlBuffer = new StringBuilder("SELECT "); @@ -717,10 +715,23 @@ public class GenericDAO { sqlBuffer.append("DISTINCT "); } - if (selectFields.size() > 0) { - modelEntity.colNameString(selectFields, sqlBuffer, "", ", ", "", datasourceInfo.aliasViews); + if (modelEntity instanceof ModelViewEntity) { + // Views must have enumerated fields in SELECT. + if (selectFields.isEmpty()) { + modelEntity.colNameString(modelEntity.getFieldsUnmodifiable(), sqlBuffer, "", ", ", "", datasourceInfo.aliasViews); + } else { + modelEntity.colNameString(selectFields, sqlBuffer, "", ", ", "", datasourceInfo.aliasViews); + } } else { - sqlBuffer.append("*"); + if (selectFields.isEmpty()) { + sqlBuffer.append("*"); + } else { + modelEntity.colNameString(selectFields, sqlBuffer, "", ", ", "", datasourceInfo.aliasViews); + } + } + if (selectFields.isEmpty()) { + // The code that follows must have a non-empty list. + selectFields = modelEntity.getFieldsUnmodifiable(); } // populate the info from entity-condition in the view-entity, if it is one and there is one