[cvs] expresso commit by lhamel: fixing:

JCorporate Ltd jcorp at jcorporate.com
Sun Aug 14 05:41:37 UTC 2005


Log Message:
-----------
fixing:

Message posted by user 'wesleywu' at 2005-08-13 14:46:18


When count distinct, the syntax should be


SELECT COUNT(DISTINCT *) FROM ...
&
SELECT COUNT(DISTINCT key_col) FROM ...,


but not


SELECT DISTINCT COUNT(*) FROM ...
&
SELECT DISTINCT COUNT(key_col) FROM ....


The distinct keyword in the latter two sql sentences is not functional at all.

Modified Files:
--------------
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc:
        JoinedDataObject.java

Revision Data
-------------
Index: JoinedDataObject.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JoinedDataObject.java,v
retrieving revision 1.49
retrieving revision 1.50
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JoinedDataObject.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JoinedDataObject.java -u -r1.49 -r1.50
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JoinedDataObject.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dataobjects/jdbc/JoinedDataObject.java
@@ -191,13 +191,6 @@
 
 
     /**
-     * The vector of MultiDB objects retrieved by the last searchAndRetrieve
-     * method
-     */
-    private ArrayList recordSet = null;
-
-
-    /**
      * My Locale
      */
     private Locale myLocale = null;
@@ -1202,9 +1195,8 @@
         checkInitialized();
         isAllowed(SecuredDBObject.SEARCH);
 
-        DBConnectionPool myPool = DBConnectionPool.getInstance(this.
-                getMappedDataContext());
-        ;
+        DBConnectionPool myPool = DBConnectionPool.getInstance(this.getMappedDataContext());
+
         DBConnection myConnection = null;
 
         JDBCDataObject primaryObject = (JDBCDataObject) this.getJoinMetaData().
@@ -1218,20 +1210,21 @@
         FastStringBuffer myStatement = FastStringBuffer.getInstance();
         try {
             if (keyFields.size() > 1) {
-                myStatement.append("SELECT ");
-                myStatement.append(getDistinct(myPool));
-                myStatement.append(" COUNT(*) FROM ");
+                myStatement.append("SELECT COUNT( " +
+                myStatement.append(getDistinct(myPool)));
+                myStatement.append(" *) FROM ");
             } else {
                 DataFieldMetaData keymetadata = primaryObject
                         .getFieldMetaData((String)
                         keyFields.get(0));
-                myStatement.append("SELECT ");
-                myStatement.append(getDistinct(myPool));
-                myStatement.append("COUNT( "
-                        + primaryObject.getJDBCMetaData().
-                        getTargetSQLTable(primaryObject.
-                        getDataContext()) + "."
-                        + keymetadata.getName() + ") FROM ");
+                myStatement.append("SELECT COUNT( ");
+                myStatement.append( myStatement.append(getDistinct(myPool)));
+                myStatement.append(
+                        primaryObject.getJDBCMetaData().getTargetSQLTable(
+                                primaryObject.getDataContext()));
+                myStatement.append(".");
+                myStatement.append( keymetadata.getName() );
+                myStatement.append( ") FROM ");
             }
 
             myStatement.append(this.buildFromClause());
@@ -1363,7 +1356,7 @@
 
             returnValue &= myObj.equals(otherObj);
 
-            if (returnValue == false) {
+            if (!returnValue) {
                 break;
             }
         }
@@ -1455,6 +1448,7 @@
         DBConnectionPool myPool = DBConnectionPool.getInstance(getDataContext());
         DBConnection myConnection = null;
 
+        ArrayList recordSet;
         try {
             if (localConnection != null) {
                 myConnection = localConnection;
@@ -2077,7 +2071,7 @@
         //If such operations are flat not allowed for this join, then
         //we return immediately
         Boolean override = (Boolean) getJoinMetaData().getPermissions().get(requestedFunction);
-        if (override != null && override.booleanValue() == false) {
+        if (override != null && !override.booleanValue()) {
             throw new SecurityException("Method: " + requestedFunction
                     + " not allowed");
         }


More information about the cvs mailing list