You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by dk...@apache.org on 2011/08/16 17:10:40 UTC

svn commit: r1158316 - in /cayenne/main/trunk: docs/doc/src/main/resources/RELEASE-NOTES.txt framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java

Author: dkazimirchyk
Date: Tue Aug 16 15:10:40 2011
New Revision: 1158316

URL: http://svn.apache.org/viewvc?rev=1158316&view=rev
Log:
CAY-1596 setFetchOffset & setFetchLimit issue under SQL Server 2008 R2 64Bit

need to read from database (offset + limit) rows and then apply offset to received result

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=1158316&r1=1158315&r2=1158316&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Tue Aug 16 15:10:40 2011
@@ -34,6 +34,7 @@ Bug Fixes Since 3.1M2:
 
 CAY-1469 Modeler: dbRelationships renaming problem
 CAY-1526 Preferences: java.lang.IllegalArgumentException: Key too long
+CAY-1539 Incorrect offset handling on some queries against database with supported LIMIT/OFFSET clauses
 CAY-1546 cayenne-lifecycle: UuidBatchFault concurrency issues
 CAY-1555 Unpublished dependencies of Maven plugins
 CAY-1575 Error generating Embeddable classes in Cayenne Modeler
@@ -41,7 +42,7 @@ CAY-1577 SQL queries for LIKE expression
 CAY-1581 Not-Escaping <> during serialization to *.map.xml
 CAY-1583 context.getObjectStore() returning null causing NullpointerException in DataMergeHandler
 CAY-1585 SelectQuery automatic cache key needs FetchOffset
-CAY-1539 Incorrect offset handling on some queries against database with supported LIMIT/OFFSET clauses
+CAY-1596 setFetchOffset & setFetchLimit issue under SQL Server 2008 R2 64Bit
 
 ----------------------------------
 Release: 3.1 M2
@@ -143,6 +144,7 @@ CAY-1577 SQL queries for LIKE expression
 CAY-1581 Not-Escaping <> during serialization to *.map.xml
 CAY-1583 context.getObjectStore() returning null causing NullpointerException in DataMergeHandler
 CAY-1585 SelectQuery automatic cache key needs FetchOffset
+CAY-1596 setFetchOffset & setFetchLimit issue under SQL Server 2008 R2 64Bit
 
 ----------------------------------
 Release: 3.0.2

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java?rev=1158316&r1=1158315&r2=1158316&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java Tue Aug 16 15:10:40 2011
@@ -28,16 +28,17 @@ public class SQLServerSelectTranslator e
         QueryMetadata metadata = getQuery().getMetaData(getEntityResolver());
         
         int limit = metadata.getFetchLimit();
+        int offset = metadata.getFetchOffset();
         
         if (limit > 0) {
         	String sql = buffer.toString();
         	
         	// If contains distinct insert top limit after
         	if (sql.startsWith("SELECT DISTINCT ")) {
-        		buffer.replace(0, 15, "SELECT DISTINCT TOP " + limit);	
+        		buffer.replace(0, 15, "SELECT DISTINCT TOP " + (offset + limit));	
         		
         	} else {
-        		buffer.replace(0, 6, "SELECT TOP " + limit);	
+        		buffer.replace(0, 6, "SELECT TOP " + (offset + limit));	
         	}
         }
     }