You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by al...@apache.org on 2013/07/09 15:25:21 UTC

svn commit: r1501256 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql: DBDictionary.java DerbyDictionary.java SelectImpl.java

Author: allee8285
Date: Tue Jul  9 13:25:21 2013
New Revision: 1501256

URL: http://svn.apache.org/r1501256
Log:
OPENJPA-2356 Database specific adjustments for previous patch. Contributed by Di Lau.

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=1501256&r1=1501255&r2=1501256&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Tue Jul  9 13:25:21 2013
@@ -5665,5 +5665,8 @@ public class DBDictionary
         return s == null ? "" : s;
     }
 
+	public int applyRange(Select select, int count) {
+		return count;
+	}
 
 }

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java?rev=1501256&r1=1501255&r2=1501256&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DerbyDictionary.java Tue Jul  9 13:25:21 2013
@@ -199,4 +199,28 @@ public class DerbyDictionary
         return super.isFatalException(subtype, ex);
     }
     
+	/**
+	 * Applies range calculation on the actual number of rows selected by a
+	 * {@code COUNT(*)} query. A range query may use either only the limit or
+	 * both offset and limit based on database dictionary support and
+	 * accordingly the number of rows in the result set needs to be modified.
+	 * 
+	 * @param select
+	 * @param count
+	 * @return
+	 */
+
+	public int applyRange(Select select, int count) {
+		long start = select.getStartIndex();
+		long end = select.getEndIndex();
+		if (supportsSelectStartIndex) {
+			if (start > 0)
+				count -= start;
+			if (end != Long.MAX_VALUE) {
+				long size = end - start;
+				count = (int) Math.min(count, size);
+			}
+		}
+		return count;
+	}
 }

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java?rev=1501256&r1=1501255&r2=1501256&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java Tue Jul  9 13:25:21 2013
@@ -366,7 +366,7 @@ public class SelectImpl
             rs = executeQuery(conn, stmnt, sql, false, store);
             int count =  getCount(rs);
              
-            return applyRange(count);
+            return _dict.applyRange(this, count);
         } finally {
             if (rs != null)
                 try { rs.close(); } catch (SQLException se) {}
@@ -376,27 +376,6 @@ public class SelectImpl
                 try { conn.close(); } catch (SQLException se) {}
         }
     }
-    
-    /**
-     * Applies range calculation on the actual number of rows selected
-     * by a {@code COUNT(*)} query. A range query may use either only
-     * the limit or both offset and limit based on database dictionary support
-     * and accordingly the number of rows in the result set needs to be 
-     * modified.
-     * @param count
-     * @return
-     */
-    int applyRange(int count) {
-    	DBDictionary dict = getDictionary();
-    	if (dict.supportsSelectStartIndex) {
-            if (getStartIndex() > 0) count -= getStartIndex();
-            if (getEndIndex() != Long.MAX_VALUE) {
-            	long size = getEndIndex() - getStartIndex();
-            	count = (int)Math.min(count,size);
-            }
-    	}
-    	return count;          
-    }
 
     public Result execute(JDBCStore store, JDBCFetchConfiguration fetch)
         throws SQLException {