You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2011/07/24 12:22:57 UTC
svn commit: r1150328 -
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java
Author: aadamchik
Date: Sun Jul 24 10:22:57 2011
New Revision: 1150328
URL: http://svn.apache.org/viewvc?rev=1150328&view=rev
Log:
CAY-1539 Incorrect offset handling on some queries against database with supported LIMIT/OFFSET clauses
a test case trying to reproduce the condition
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java?rev=1150328&r1=1150327&r2=1150328&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/SelectQueryTest.java Sun Jul 24 10:22:57 2011
@@ -303,6 +303,26 @@ public class SelectQueryTest extends Ser
}
}
+ public void testSelectFetchLimit_Offset_DistinctClob() throws Exception {
+ if (accessStackAdapter.supportsLobs()) {
+ createClobDataSet();
+
+ // see CAY-1539... CLOB column causes suppression of DISTINCT in SQL, and
+ // hence the offset processing is done in memory
+ SelectQuery query = new SelectQuery(ClobTestEntity.class);
+ query.addOrdering(
+ "db:" + ClobTestEntity.CLOB_TEST_ID_PK_COLUMN,
+ SortOrder.ASCENDING);
+ query.setFetchLimit(1);
+ query.setFetchOffset(1);
+ query.setDistinct(true);
+
+ List<ClobTestEntity> objects = context.performQuery(query);
+ assertEquals(1, objects.size());
+ assertEquals(2, Cayenne.intPKForObject(objects.get(0)));
+ }
+ }
+
public void testSelectEqualsClob() throws Exception {
if (accessStackAdapter.supportsLobs()) {
createClobDataSet();
@@ -575,9 +595,9 @@ public class SelectQueryTest extends Ser
assertTrue(query.getQualifier().match(a1));
assertTrue(query.getQualifier().match(a3));
- assertEquals(query.getQualifier(), ExpressionFactory.matchAnyExp(Arrays.asList(
- a1,
- a3)));
+ assertEquals(
+ query.getQualifier(),
+ ExpressionFactory.matchAnyExp(Arrays.asList(a1, a3)));
}
/**
@@ -596,31 +616,29 @@ public class SelectQueryTest extends Ser
numbers));
context.performQuery(query);
}
-
+
public void testCacheOffsetAndLimit() throws Exception {
createArtistsDataSet();
-
+
SelectQuery query1 = new SelectQuery(Artist.class);
query1.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
query1.setFetchOffset(0);
query1.setFetchLimit(10);
context.performQuery(query1);
-
+
SelectQuery query2 = new SelectQuery(Artist.class);
query2.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
query2.setFetchOffset(10);
query2.setFetchLimit(10);
context.performQuery(query2);
-
+
SelectQuery query3 = new SelectQuery(Artist.class);
query3.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
query3.setFetchOffset(10);
query3.setFetchLimit(10);
context.performQuery(query3);
-
- assertFalse(query1.metaData.getCacheKey()
- .equals(query2.metaData.cacheKey));
- assertEquals(query2.metaData.getCacheKey(),
- query3.metaData.getCacheKey());
+
+ assertFalse(query1.metaData.getCacheKey().equals(query2.metaData.cacheKey));
+ assertEquals(query2.metaData.getCacheKey(), query3.metaData.getCacheKey());
}
}