Author: andrey
Date: Mon May 25 07:05:27 2009
New Revision: 778311

URL: http://svn.apache.org/viewvc?rev=778311&view=rev
Log:
CAY-1225 Controlling JDBC Driver setting "fetchSize" in a SelectQuery

Added:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/StatementFetchSizeTest.java
Modified:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainQuery.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/BaseQueryMetadata.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/DefaultQueryMetadata.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadata.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadataWrapper.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQuery.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalQuery.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalSelectQuery.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/RangeQuery.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SQLTemplateBuilderTest.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SelectQueryBuilderTest.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/MockQueryMetadata.java

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainQuery.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainQuery.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainQuery.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainQuery.java
 Mon May 25 07:05:27 2009
@@ -81,6 +81,7 @@
     /**
      * @deprecated since 3.0 in favor of 'getCacheStrategy'.
      */
+    @Deprecated
     public String getCachePolicy() {
         return null;
     }
@@ -108,6 +109,7 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public int getFetchStartIndex() {
         return getFetchOffset();
     }
@@ -144,4 +146,8 @@
     public boolean isResolvingInherited() {
         return false;
     }
+
+    public int getStatementFetchSize() {
+        return 0;
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectStore.java
 Mon May 25 07:05:27 2009
@@ -248,6 +248,7 @@
      * @since 1.2
      * @deprecated since 3.0. See {...@link DataContext#getQueryCache()}.
      */
+    @Deprecated
     public int cachedQueriesCount() {
         return context != null && context.getQueryCache() != null ? context
                 .getQueryCache()
@@ -319,6 +320,7 @@
      * @deprecated since 3.0, use {...@link 
DataContext#invalidateObjects(Collection)} or
      *             {...@link RefreshQuery}.
      */
+    @Deprecated
     public synchronized void objectsInvalidated(Collection objects) {
         if (context != null) {
             context.invalidateObjects(objects);
@@ -426,6 +428,7 @@
      * @since 1.1
      * @deprecated since 3.0 unused
      */
+    @Deprecated
     public void snapshotsUpdatedForObjects(List objects, List snapshots, 
boolean refresh) {
         DataRowStore cache = getDataRowCache();
         if (cache != null) {
@@ -541,6 +544,7 @@
      * @deprecated since 3.0 as ObjectStore holds weak reference to unmodified 
objects and
      *             this feature is useless.
      */
+    @Deprecated
     public synchronized void startTrackingNewObjects() {
         // noop
     }
@@ -553,6 +557,7 @@
      * @deprecated since 3.0 as ObjectStore holds weak reference to unmodified 
objects and
      *             this feature is useless.
      */
+    @Deprecated
     public synchronized void unregisterNewObjects() {
         // noop
     }
@@ -583,6 +588,7 @@
      * @since 1.1
      * @deprecated since 3.0. See {...@link DataContext#getQueryCache()}.
      */
+    @Deprecated
     public synchronized List getCachedQueryResult(String name) {
         return context != null && context.getQueryCache() != null ? context
                 .getQueryCache()
@@ -595,6 +601,7 @@
      * @since 1.1
      * @deprecated since 3.0. See {...@link DataContext#getQueryCache()}.
      */
+    @Deprecated
     public synchronized void cacheQueryResult(String name, List results) {
         if (context != null) {
             context.getQueryCache().put(new CacheQueryMetadata(name), results);
@@ -718,6 +725,7 @@
      * @deprecated since 3.0 use
      *             {...@link ObjectContext#prepareForAccess(Persistent, 
String, boolean)}.
      */
+    @Deprecated
     public void resolveHollow(Persistent object) {
         context.prepareForAccess(object, null, false);
     }
@@ -1155,6 +1163,7 @@
      * @deprecated since 3.0 as this inner class is used to provide backwards
      *             compatibility for some deprecated methods.
      */
+    @Deprecated
     final class CacheQueryMetadata implements QueryMetadata {
 
         private String cacheKey;
@@ -1206,6 +1215,7 @@
         /**
          * @deprecated since 3.0
          */
+        @Deprecated
         public int getFetchStartIndex() {
             return getFetchOffset();
         }
@@ -1245,5 +1255,9 @@
         public boolean isResolvingInherited() {
             return false;
         }
+
+        public int getStatementFetchSize() {
+            return 0;
+        }
     }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAction.java
 Mon May 25 07:05:27 2009
@@ -98,6 +98,10 @@
         sqlQuery.setFetchOffset(md.getFetchOffset());
         sqlQuery.setResult(compiledExpression.getResult());
         sqlQuery.setPageSize(md.getPageSize());
+        
+        if (md.getStatementFetchSize() != 0) {
+            sqlQuery.setStatementFetchSize(md.getStatementFetchSize());
+        }
 
         actionFactory.sqlAction(sqlQuery).performAction(connection, observer);
     }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java
 Mon May 25 07:05:27 2009
@@ -70,6 +70,8 @@
         CallableStatement statement = (CallableStatement) 
transl.createStatement();
 
         try {
+            initStatement(statement);
+            
             // stored procedure may contain a mixture of update counts and 
result sets,
             // and out parameters. Read out parameters first, then
             // iterate until we exhaust all results
@@ -228,4 +230,15 @@
             delegate.nextRows(query, Collections.singletonList(result));
         }
     }
+    
+    /**
+     * Initializes statement with query parameters
+     * @throws Exception 
+     */
+    void initStatement(CallableStatement statement) throws Exception {
+        int statementFetchSize = 
query.getMetaData(getEntityResolver()).getStatementFetchSize();
+        if (statementFetchSize != 0) {
+            statement.setFetchSize(statementFetchSize);
+        }
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
 Mon May 25 07:05:27 2009
@@ -63,6 +63,7 @@
      *             {...@link #SQLTemplateAction(SQLTemplate, DbAdapter, 
EntityResolver)}
      *             constructor.
      */
+    @Deprecated
     public SQLTemplateAction(SQLTemplate query, DbAdapter adapter) {
         this.query = query;
         this.adapter = adapter;
@@ -333,6 +334,10 @@
                         bindings[i].getPrecision());
             }
         }
+        
+        if (queryMetadata.getStatementFetchSize() != 0) {
+            
preparedStatement.setFetchSize(queryMetadata.getStatementFetchSize());
+        }
     }
 
     /**
@@ -340,6 +345,7 @@
      * 
      * @deprecated since 3.0
      */
+    @Deprecated
     public boolean isRemovingLineBreaks() {
         return true;
     }
@@ -347,6 +353,7 @@
     /**
      * @deprecated since 3.0 - does nothing
      */
+    @Deprecated
     public void setRemovingLineBreaks(boolean removingLineBreaks) {
 
     }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
 Mon May 25 07:05:27 2009
@@ -218,5 +218,9 @@
                 }
             }
         }
+        
+        if (queryMetadata.getStatementFetchSize() != 0) {
+            stmt.setFetchSize(queryMetadata.getStatementFetchSize());
+        }
     }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/cache/NestedQueryCache.java
 Mon May 25 07:05:27 2009
@@ -136,6 +136,7 @@
         /**
          * @deprecated since 3.0 in favor of 'getCacheStrategy'.
          */
+        @Deprecated
         public String getCachePolicy() {
             return mdDelegate.getCachePolicy();
         }
@@ -167,6 +168,7 @@
         /**
          * @deprecated since 3.0
          */
+        @Deprecated
         public int getFetchStartIndex() {
             return mdDelegate.getFetchStartIndex();
         }
@@ -210,5 +212,9 @@
         public boolean isResolvingInherited() {
             return mdDelegate.isResolvingInherited();
         }
+
+        public int getStatementFetchSize() {
+            return mdDelegate.getStatementFetchSize();
+        }
     }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/BaseQueryMetadata.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/BaseQueryMetadata.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/BaseQueryMetadata.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/BaseQueryMetadata.java
 Mon May 25 07:05:27 2009
@@ -47,6 +47,8 @@
 
     int fetchLimit = QueryMetadata.FETCH_LIMIT_DEFAULT;
     int fetchOffset = QueryMetadata.FETCH_OFFSET_DEFAULT;
+    
+    int statementFetchSize = QueryMetadata.FETCH_OFFSET_DEFAULT;
 
     int pageSize = QueryMetadata.PAGE_SIZE_DEFAULT;
     boolean fetchingDataRows = QueryMetadata.FETCHING_DATA_ROWS_DEFAULT;
@@ -164,6 +166,7 @@
         Object fetchOffset = 
properties.get(QueryMetadata.FETCH_OFFSET_PROPERTY);
         Object fetchLimit = properties.get(QueryMetadata.FETCH_LIMIT_PROPERTY);
         Object pageSize = properties.get(QueryMetadata.PAGE_SIZE_PROPERTY);
+        Object statementFetchSize = 
properties.get(QueryMetadata.STATEMENT_FETCH_SIZE_PROPERTY);
         Object fetchingDataRows = properties
                 .get(QueryMetadata.FETCHING_DATA_ROWS_PROPERTY);
 
@@ -184,6 +187,10 @@
         this.pageSize = (pageSize != null)
                 ? Integer.parseInt(pageSize.toString())
                 : QueryMetadata.PAGE_SIZE_DEFAULT;
+                
+        this.statementFetchSize = (statementFetchSize != null)
+                ? Integer.parseInt(statementFetchSize.toString())
+                : QueryMetadata.STATEMENT_FETCH_SIZE_DEFAULT;
 
         this.fetchingDataRows = (fetchingDataRows != null)
                 ? "true".equalsIgnoreCase(fetchingDataRows.toString())
@@ -236,6 +243,10 @@
             encoder.printProperty(QueryMetadata.CACHE_STRATEGY_PROPERTY, 
cacheStrategy
                     .name());
         }
+        
+        if (statementFetchSize != QueryMetadata.STATEMENT_FETCH_SIZE_DEFAULT) {
+            encoder.printProperty(QueryMetadata.STATEMENT_FETCH_SIZE_PROPERTY, 
statementFetchSize);
+        }
 
         if (prefetchTree != null) {
             prefetchTree.encodeAsXML(encoder);
@@ -473,6 +484,22 @@
     void setPageSize(int i) {
         pageSize = i;
     }
+    
+    /**
+     * Sets statement's fetch size (0 for no default size)
+     * @since 3.0 
+     */
+    void setStatementFetchSize(int size) {
+        this.statementFetchSize = size;
+    }
+    
+    /**
+     * @return statement's fetch size
+     * @since 3.0
+     */
+    public int getStatementFetchSize() {
+        return statementFetchSize;
+    }
 
     /**
      * Adds a joint prefetch.

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/DefaultQueryMetadata.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/DefaultQueryMetadata.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/DefaultQueryMetadata.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/DefaultQueryMetadata.java
 Mon May 25 07:05:27 2009
@@ -106,6 +106,7 @@
     /**
      * @deprecated since 3.0 {...@link #getCacheStrategy()} replaces this 
method.
      */
+    @Deprecated
     public String getCachePolicy() {
         return QueryMetadata.CACHE_POLICY_DEFAULT;
     }
@@ -121,6 +122,7 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public boolean isResolvingInherited() {
         return true;
     }
@@ -136,6 +138,7 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public int getFetchStartIndex() {
         return getFetchOffset();
     }
@@ -151,4 +154,8 @@
     public Map<String, String> getPathSplitAliases() {
         return Collections.emptyMap();
     }
+
+    public int getStatementFetchSize() {
+        return QueryMetadata.STATEMENT_FETCH_SIZE_DEFAULT;
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQuery.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
 Mon May 25 07:05:27 2009
@@ -249,4 +249,20 @@
     public void setPageSize(int pageSize) {
         metadata.setPageSize(pageSize);
     }
+    
+    /**
+     * Sets statement's fetch size (0 for no default size)
+     * @since 3.0 
+     */
+    public void setStatementFetchSize(int size) {
+        metadata.setStatementFetchSize(size);
+    }
+    
+    /**
+     * @return statement's fetch size
+     * @since 3.0
+     */
+    public int getStatementFetchSize() {
+        return metadata.getStatementFetchSize();
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQuery.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/ProcedureQuery.java
 Mon May 25 07:05:27 2009
@@ -301,6 +301,7 @@
     /**
      * @deprecated since 3.0 {...@link #getCacheStrategy()} replaces this 
method.
      */
+    @Deprecated
     public String getCachePolicy() {
         return metaData.getCachePolicy();
     }
@@ -309,6 +310,7 @@
      * @deprecated since 3.0 {...@link #setCacheStrategy(QueryCacheStrategy)} 
replaces this
      *             method.
      */
+    @Deprecated
     public void setCachePolicy(String policy) {
         metaData.setCachePolicy(policy);
     }
@@ -384,6 +386,7 @@
      *             redundant, although it is still being taken into account. 
It will be
      *             removed in the later versions of Cayenne.
      */
+    @Deprecated
     public boolean isRefreshingObjects() {
         return metaData.isRefreshingObjects();
     }
@@ -393,6 +396,7 @@
      *             redundant, although it is still being taken into account. 
It will be
      *             removed in the later versions of Cayenne.
      */
+    @Deprecated
     public void setRefreshingObjects(boolean flag) {
         // noop
     }
@@ -400,6 +404,7 @@
     /**
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public boolean isResolvingInherited() {
         return true;
     }
@@ -407,6 +412,7 @@
     /**
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public void setResolvingInherited(boolean b) {
         // noop
     }
@@ -531,4 +537,20 @@
     public void setColumnNamesCapitalization(CapsStrategy 
columnNameCapitalization) {
         this.columnNamesCapitalization = columnNameCapitalization;
     }
+    
+    /**
+     * Sets statement's fetch size (0 for no default size)
+     * @since 3.0 
+     */
+    public void setStatementFetchSize(int size) {
+        metaData.setStatementFetchSize(size);
+    }
+    
+    /**
+     * @return statement's fetch size
+     * @since 3.0
+     */
+    public int getStatementFetchSize() {
+        return metaData.getStatementFetchSize();
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadata.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadata.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadata.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadata.java
 Mon May 25 07:05:27 2009
@@ -40,6 +40,7 @@
      * 
      * @deprecated since 3.0 use {...@link QueryCacheStrategy} enum.
      */
+    @Deprecated
     public static final String NO_CACHE = "nocache";
 
     /**
@@ -48,6 +49,7 @@
      * 
      * @deprecated since 3.0 use {...@link QueryCacheStrategy} enum.
      */
+    @Deprecated
     public static final String LOCAL_CACHE = "localcache";
 
     /**
@@ -55,6 +57,7 @@
      * 
      * @deprecated since 3.0 use {...@link QueryCacheStrategy} enum.
      */
+    @Deprecated
     public static final String LOCAL_CACHE_REFRESH = "localcache_refresh";
 
     /**
@@ -63,6 +66,7 @@
      * 
      * @deprecated since 3.0 use {...@link QueryCacheStrategy} enum.
      */
+    @Deprecated
     public static final String SHARED_CACHE = "sharedcache";
 
     /**
@@ -70,6 +74,7 @@
      * 
      * @deprecated since 3.0 use {...@link QueryCacheStrategy} enum.
      */
+    @Deprecated
     public static final String SHARED_CACHE_REFRESH = "sharedcache_refresh";
 
     /**
@@ -117,26 +122,31 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public static final String REFRESHING_OBJECTS_PROPERTY = 
"cayenne.GenericSelectQuery.refreshingObjects";
 
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public static final boolean REFRESHING_OBJECTS_DEFAULT = true;
 
     /**
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public static final String RESOLVING_INHERITED_PROPERTY = 
"cayenne.GenericSelectQuery.resolvingInherited";
 
     /**
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public static final boolean RESOLVING_INHERITED_DEFAULT = true;
 
     /**
      * @deprecated since 3.0 use {...@value #CACHE_STRATEGY_PROPERTY}
      */
+    @Deprecated
     public static final String CACHE_POLICY_PROPERTY = 
"cayenne.GenericSelectQuery.cachePolicy";
 
     /**
@@ -152,7 +162,24 @@
     /**
      * @deprecated since 3.0 use {...@link QueryCacheStrategy} enum.
      */
+    @Deprecated
     public static final String CACHE_POLICY_DEFAULT = NO_CACHE;
+    
+    /**
+     * Defines the name of the property for the query {...@link 
#getStatementFetchSize() fetch
+     * size}.
+     * 
+     * @since 3.0
+     */
+    public static final String STATEMENT_FETCH_SIZE_PROPERTY = 
"cayenne.GenericSelectQuery.statementFetchSize";
+
+    /**
+     * Defines default query fetch start index, which is 0, meaning that 
matching rows
+     * selected starting from the first.
+     * 
+     * @since 3.0
+     */
+    public static final int STATEMENT_FETCH_SIZE_DEFAULT = 0;
 
     /**
      * @since 3.0
@@ -186,6 +213,7 @@
      * 
      * @deprecated since 3.0 {...@link #getCacheStrategy()} replaces this 
method.
      */
+    @Deprecated
     String getCachePolicy();
 
     /**
@@ -231,6 +259,7 @@
      * 
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     boolean isResolvingInherited();
 
     /**
@@ -250,6 +279,7 @@
     /**
      * @deprecated since 3.0, renamed to {...@link #getFetchOffset()}.
      */
+    @Deprecated
     int getFetchStartIndex();
 
     /**
@@ -297,4 +327,10 @@
      * @since 3.0
      */
     List<Object> getResultSetMapping();
+    
+    /**
+     * @return statement's fetch size
+     * @since 3.0
+     */
+    public int getStatementFetchSize();
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadataWrapper.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadataWrapper.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadataWrapper.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/QueryMetadataWrapper.java
 Mon May 25 07:05:27 2009
@@ -111,6 +111,7 @@
     /**
      * @deprecated since 3.0 {...@link #getCacheStrategy()} replaces this 
method.
      */
+    @Deprecated
     public String getCachePolicy() {
         return (overrideExists(QueryMetadata.CACHE_POLICY_PROPERTY)) ? 
(String) overrides
                 .get(QueryMetadata.CACHE_POLICY_PROPERTY) : 
info.getCachePolicy();
@@ -144,6 +145,7 @@
     /**
      * @deprecated since 3.0 as super is deprecated.
      */
+    @Deprecated
     public boolean isRefreshingObjects() {
         return true;
     }
@@ -151,6 +153,7 @@
     /**
      * @deprecated since 3.0 inheritance resolving is not optional.
      */
+    @Deprecated
     public boolean isResolvingInherited() {
         return true;
     }
@@ -171,6 +174,7 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public int getFetchStartIndex() {
         return getFetchOffset();
     }
@@ -187,4 +191,13 @@
     public PrefetchTreeNode getPrefetchTree() {
         return info.getPrefetchTree();
     }
+
+    public int getStatementFetchSize() {
+        if (!overrideExists(QueryMetadata.STATEMENT_FETCH_SIZE_PROPERTY)) {
+            return info.getPageSize();
+        }
+
+        Number n = (Number) 
overrides.get(QueryMetadata.STATEMENT_FETCH_SIZE_PROPERTY);
+        return n != null ? n.intValue() : 0;
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SQLTemplate.java
 Mon May 25 07:05:27 2009
@@ -322,6 +322,7 @@
     /**
      * @deprecated since 3.0 {...@link #getCacheStrategy()} replaces this 
method.
      */
+    @Deprecated
     public String getCachePolicy() {
         return metaData.getCachePolicy();
     }
@@ -330,6 +331,7 @@
      * @deprecated since 3.0 {...@link #setCacheStrategy(QueryCacheStrategy)} 
replaces this
      *             method.
      */
+    @Deprecated
     public void setCachePolicy(String policy) {
         metaData.setCachePolicy(policy);
     }
@@ -405,6 +407,7 @@
      *             redundant, although it is still being taken into account. 
It will be
      *             removed in the later versions of Cayenne.
      */
+    @Deprecated
     public boolean isRefreshingObjects() {
         return metaData.isRefreshingObjects();
     }
@@ -414,6 +417,7 @@
      *             redundant, although it is still being taken into account. 
It will be
      *             removed in the later versions of Cayenne.
      */
+    @Deprecated
     public void setRefreshingObjects(boolean flag) {
         // noop
     }
@@ -421,6 +425,7 @@
     /**
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public boolean isResolvingInherited() {
         return true;
     }
@@ -428,6 +433,7 @@
     /**
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public void setResolvingInherited(boolean b) {
         // noop
     }
@@ -622,4 +628,20 @@
     public SQLResult getResult() {
         return result;
     }
+    
+    /**
+     * Sets statement's fetch size (0 for no default size)
+     * @since 3.0 
+     */
+    public void setStatementFetchSize(int size) {
+        metaData.setStatementFetchSize(size);
+    }
+    
+    /**
+     * @return statement's fetch size
+     * @since 3.0
+     */
+    public int getStatementFetchSize() {
+        return metaData.getStatementFetchSize();
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQuery.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQuery.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQuery.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/query/SelectQuery.java
 Mon May 25 07:05:27 2009
@@ -415,6 +415,7 @@
      * @deprecated since 3.0. Will likely be removed after 3.0M6. Can be 
replaced with
      *             EJBQL.
      */
+    @Deprecated
     public List<String> getCustomDbAttributes() {
         // if query root is DbEntity, and no custom attributes
         // are defined, return DbEntity attributes.
@@ -438,6 +439,7 @@
      * @deprecated since 3.0. Will likely be removed after 3.0M6. Can be 
replaced with
      *             EJBQL.
      */
+    @Deprecated
     public void addCustomDbAttribute(String attributePath) {
         nonNullCustomDbAttributes().add(attributePath);
     }
@@ -446,6 +448,7 @@
      * @deprecated since 3.0. Will likely be removed after 3.0M6. Can be 
replaced with
      *             EJBQL.
      */
+    @Deprecated
     public void addCustomDbAttributes(List<String> attrPaths) {
         nonNullCustomDbAttributes().addAll(attrPaths);
     }
@@ -532,6 +535,7 @@
      *             redundant, although it is still being taken into account. 
It will be
      *             removed in the later versions of Cayenne.
      */
+    @Deprecated
     public boolean isRefreshingObjects() {
         return metaData.isRefreshingObjects();
     }
@@ -542,6 +546,7 @@
      *             redundant, although it is still being taken into account. 
It will be
      *             removed in the later versions of Cayenne.
      */
+    @Deprecated
     public void setRefreshingObjects(boolean flag) {
         // noop
     }
@@ -550,6 +555,7 @@
      * @since 1.1
      * @deprecated since 3.0 {...@link #getCacheStrategy()} replaces this 
method.
      */
+    @Deprecated
     public String getCachePolicy() {
         return metaData.getCachePolicy();
     }
@@ -559,6 +565,7 @@
      * @deprecated since 3.0 {...@link #setCacheStrategy(QueryCacheStrategy)} 
replaces this
      *             method.
      */
+    @Deprecated
     public void setCachePolicy(String policy) {
         metaData.setCachePolicy(policy);
     }
@@ -646,6 +653,7 @@
      * @since 1.1
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public boolean isResolvingInherited() {
         return true;
     }
@@ -657,6 +665,7 @@
      * @since 1.1
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     public void setResolvingInherited(boolean b) {
         // noop
     }
@@ -686,4 +695,20 @@
 
         return orderings;
     }
+    
+    /**
+     * Sets statement's fetch size (0 for no default size)
+     * @since 3.0 
+     */
+    public void setStatementFetchSize(int size) {
+        metaData.setStatementFetchSize(size);
+    }
+    
+    /**
+     * @return statement's fetch size
+     * @since 3.0
+     */
+    public int getStatementFetchSize() {
+        return metaData.getStatementFetchSize();
+    }
 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalQuery.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalQuery.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalQuery.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalQuery.java
 Mon May 25 07:05:27 2009
@@ -82,6 +82,7 @@
             /**
              * @deprecated since 3.0 in favor of 'getCacheStrategy'.
              */
+            @Deprecated
             public String getCachePolicy() {
                 return metadata.getCachePolicy();
             }
@@ -112,6 +113,7 @@
             /**
              * @deprecated since 3.0
              */
+            @Deprecated
             public int getFetchStartIndex() {
                 return metadata.getFetchStartIndex();
             }
@@ -147,6 +149,7 @@
             /**
              * @deprecated since 3.0
              */
+            @Deprecated
             public boolean isRefreshingObjects() {
                 return metadata.isRefreshingObjects();
             }
@@ -154,9 +157,14 @@
             /**
              * @deprecated since 3.0. Inheritance resolving is not optional 
anymore.
              */
+            @Deprecated
             public boolean isResolvingInherited() {
                 return metadata.isResolvingInherited();
             }
+
+            public int getStatementFetchSize() {
+                return metadata.getStatementFetchSize();
+            }
         };
     }
 

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalSelectQuery.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalSelectQuery.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalSelectQuery.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/IncrementalSelectQuery.java
 Mon May 25 07:05:27 2009
@@ -89,6 +89,7 @@
             /**
              * @deprecated since 3.0 in favor of 'getCacheStrategy'.
              */
+            @Deprecated
             public String getCachePolicy() {
                 return metadata.getCachePolicy();
             }
@@ -116,6 +117,7 @@
             /**
              * @deprecated since 3.0
              */
+            @Deprecated
             public int getFetchStartIndex() {
                 return metadata.getFetchStartIndex();
             }
@@ -155,6 +157,10 @@
             public boolean isResolvingInherited() {
                 return metadata.isResolvingInherited();
             }
+
+            public int getStatementFetchSize() {
+                return metadata.getStatementFetchSize();
+            }
         };
     }
 
@@ -306,6 +312,7 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     @Override
     public boolean isRefreshingObjects() {
         return query.isRefreshingObjects();
@@ -314,6 +321,7 @@
     /**
      * @deprecated since 3.0. Inheritance resolving is not optional anymore.
      */
+    @Deprecated
     @Override
     public boolean isResolvingInherited() {
         return query.isResolvingInherited();
@@ -397,6 +405,7 @@
     /**
      * @deprecated since 3.0 as wrapped method is also deprecated.
      */
+    @Deprecated
     @Override
     public void setRefreshingObjects(boolean flag) {
         query.setRefreshingObjects(flag);
@@ -405,6 +414,7 @@
     /**
      * @deprecated since 3.0 as wrapped method is also deprecated.
      */
+    @Deprecated
     @Override
     public void setResolvingInherited(boolean b) {
         query.setResolvingInherited(b);

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/RangeQuery.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/RangeQuery.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/RangeQuery.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/remote/RangeQuery.java
 Mon May 25 07:05:27 2009
@@ -95,6 +95,7 @@
             /**
              * @deprecated since 3.0
              */
+            @Deprecated
             public int getFetchStartIndex() {
                 return getFetchOffset();
             }
@@ -114,6 +115,7 @@
             /**
              * @deprecated since 3.0 in favor of 'getCacheStrategy'.
              */
+            @Deprecated
             public String getCachePolicy() {
                 return QueryMetadata.NO_CACHE;
             }
@@ -160,6 +162,10 @@
             public boolean isResolvingInherited() {
                 throw new UnsupportedOperationException();
             }
+
+            public int getStatementFetchSize() {
+                return 0;
+            }
         };
     }
 

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SQLTemplateBuilderTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SQLTemplateBuilderTest.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SQLTemplateBuilderTest.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SQLTemplateBuilderTest.java
 Mon May 25 07:05:27 2009
@@ -22,8 +22,8 @@
 import junit.framework.TestCase;
 
 import org.apache.cayenne.query.Query;
-import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.QueryMetadata;
+import org.apache.cayenne.query.SQLTemplate;
 
 /**
  */
@@ -57,10 +57,13 @@
     public void testGetQueryProperties() throws Exception {
         SQLTemplateBuilder builder = new MockupRootQueryBuilder();
         builder.addProperty(QueryMetadata.FETCH_LIMIT_PROPERTY, "5");
+        builder.addProperty(QueryMetadata.STATEMENT_FETCH_SIZE_PROPERTY, "6");
 
         Query query = builder.getQuery();
         assertTrue(query instanceof SQLTemplate);
         assertEquals(5, ((SQLTemplate) query).getFetchLimit());
+        
+        assertEquals(6, ((SQLTemplate) query).getStatementFetchSize());
 
         // TODO: test other properties...
     }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SelectQueryBuilderTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SelectQueryBuilderTest.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SelectQueryBuilderTest.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/SelectQueryBuilderTest.java
 Mon May 25 07:05:27 2009
@@ -66,10 +66,13 @@
     public void testGetQueryProperties() throws Exception {
         SelectQueryBuilder builder = new MockupRootQueryBuilder();
         builder.addProperty(QueryMetadata.FETCH_LIMIT_PROPERTY, "5");
+        builder.addProperty(QueryMetadata.STATEMENT_FETCH_SIZE_PROPERTY, "6");
 
         Query query = builder.getQuery();
         assertTrue(query instanceof SelectQuery);
         assertEquals(5, ((SelectQuery) query).getFetchLimit());
+        
+        assertEquals(6, ((SelectQuery) query).getStatementFetchSize());
 
         // TODO: test other properties...
     }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/MockQueryMetadata.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/MockQueryMetadata.java?rev=778311&r1=778310&r2=778311&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/MockQueryMetadata.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/MockQueryMetadata.java
 Mon May 25 07:05:27 2009
@@ -57,6 +57,7 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public String getCachePolicy() {
         return null;
     }
@@ -100,6 +101,7 @@
     /**
      * @deprecated since 3.0
      */
+    @Deprecated
     public int getFetchStartIndex() {
         return getFetchOffset();
     }
@@ -115,4 +117,8 @@
     public Query getOrginatingQuery() {
         return null;
     }
+
+    public int getStatementFetchSize() {
+        return 0;
+    }
 }

Added: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/StatementFetchSizeTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/StatementFetchSizeTest.java?rev=778311&view=auto
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/StatementFetchSizeTest.java
 (added)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/StatementFetchSizeTest.java
 Mon May 25 07:05:27 2009
@@ -0,0 +1,47 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.query;
+
+import org.apache.art.Artist;
+import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.unit.CayenneCase;
+
+public class StatementFetchSizeTest extends CayenneCase {
+    public void test() {
+        DataContext dataContext = createDataContext();
+        
+        SelectQuery query = new SelectQuery(Artist.class);
+        query.setStatementFetchSize(10);
+        
+        assertEquals(10, 
query.getMetaData(dataContext.getEntityResolver()).getStatementFetchSize());
+        dataContext.performQuery(query);
+        
+        SQLTemplate template = new SQLTemplate(Artist.class, "SELECT ARTIST_ID 
FROM ARTIST");
+        template.setStatementFetchSize(10);
+        
+        assertEquals(10, 
template.getMetaData(dataContext.getEntityResolver()).getStatementFetchSize());
+        dataContext.performQuery(template);
+        
+        EJBQLQuery ejbql = new EJBQLQuery("select a from Artist a");
+        ejbql.setStatementFetchSize(10);
+        
+        assertEquals(10, 
ejbql.getMetaData(dataContext.getEntityResolver()).getStatementFetchSize());
+        dataContext.performQuery(ejbql);
+    }
+}


Reply via email to