Author: oltka
Date: Wed Feb 15 12:35:45 2012
New Revision: 1244463
URL: http://svn.apache.org/viewvc?rev=1244463&view=rev
Log:
CAY-1659 Ingres limit query support
Added:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresActionBuilder.java
- copied, changed from r1244438,
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java
- copied, changed from r1244438,
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
Copied:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresActionBuilder.java
(from r1244438,
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java)
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresActionBuilder.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresActionBuilder.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java&r1=1244438&r2=1244463&rev=1244463&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresActionBuilder.java
Wed Feb 15 12:35:45 2012
@@ -16,24 +16,23 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
+package org.apache.cayenne.dba.ingres;
-package org.apache.cayenne.unit;
+import org.apache.cayenne.dba.JdbcActionBuilder;
+import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.query.SQLAction;
+import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.dba.DbAdapter;
-public class IngresUnitDbAdapter extends UnitDbAdapter {
+public class IngresActionBuilder extends JdbcActionBuilder {
- public IngresUnitDbAdapter(DbAdapter adapter) {
- super(adapter);
+ public IngresActionBuilder(JdbcAdapter adapter, EntityResolver resolver) {
+ super(adapter, resolver);
}
-
- @Override
- public boolean supportsFKConstraints() {
- return false;
- }
-
+
@Override
- public boolean supportsLobs() {
- return true;
- }
+ public SQLAction objectSelectAction(SelectQuery query) {
+ return new IngresSelectAction(query, adapter, entityResolver);
+ }
}
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java?rev=1244463&r1=1244462&r2=1244463&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
Wed Feb 15 12:35:45 2012
@@ -75,6 +75,12 @@ public class IngresAdapter extends JdbcA
IngresAdapter.TRIM_FUNCTION);
}
+ @Override
+ public SQLAction getAction(Query query, DataNode node) {
+ return query
+ .createSQLAction(new IngresActionBuilder(this,
node.getEntityResolver()));
+ }
+
/**
* Returns a SQL string that can be used to create database table
corresponding to
* <code>ent</code> parameter.
Added:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java?rev=1244463&view=auto
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
(added)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
Wed Feb 15 12:35:45 2012
@@ -0,0 +1,51 @@
+/*****************************************************************
+ * 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.dba.ingres;
+
+import java.sql.Connection;
+
+import org.apache.cayenne.access.jdbc.SelectAction;
+import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.query.SelectQuery;
+
+public class IngresSelectAction extends SelectAction {
+
+ public IngresSelectAction(SelectQuery query, JdbcAdapter adapter,
+ EntityResolver entityResolver) {
+ super(query, adapter, entityResolver);
+ }
+
+ @Override
+ protected int getInMemoryOffset(int queryOffset) {
+ return 0;
+ }
+
+ @Override
+ protected SelectTranslator createTranslator(Connection connection) {
+ SelectTranslator translator = new IngresSelectTranslator();
+ translator.setQuery(query);
+ translator.setAdapter(adapter);
+ translator.setEntityResolver(getEntityResolver());
+ translator.setConnection(connection);
+ translator.setJdbcEventLogger(adapter.getJdbcEventLogger());
+ return translator;
+ }
+}
Copied:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java
(from r1244438,
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java)
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java&r1=1244438&r2=1244463&rev=1244463&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java
Wed Feb 15 12:35:45 2012
@@ -16,24 +16,24 @@
* specific language governing permissions and limitations
* under the License.
****************************************************************/
+package org.apache.cayenne.dba.ingres;
-package org.apache.cayenne.unit;
+import org.apache.cayenne.access.trans.SelectTranslator;
-import org.apache.cayenne.dba.DbAdapter;
+public class IngresSelectTranslator extends SelectTranslator {
-public class IngresUnitDbAdapter extends UnitDbAdapter {
-
- public IngresUnitDbAdapter(DbAdapter adapter) {
- super(adapter);
- }
-
@Override
- public boolean supportsFKConstraints() {
- return false;
- }
-
- @Override
- public boolean supportsLobs() {
- return true;
+ protected void appendLimitAndOffsetClauses(StringBuilder buffer) {
+ // limit results
+ int offset = queryMetadata.getFetchOffset();
+ int limit = queryMetadata.getFetchLimit();
+
+ if (offset > 0) {
+ buffer.append(" OFFSET ").append(offset);
+ }
+
+ if (limit > 0) {
+ buffer.append(" FETCH NEXT ").append(limit).append(" ROWS ONLY ");
+ }
}
}
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
URL:
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java?rev=1244463&r1=1244462&r2=1244463&view=diff
==============================================================================
---
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
(original)
+++
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/IngresUnitDbAdapter.java
Wed Feb 15 12:35:45 2012
@@ -26,11 +26,11 @@ public class IngresUnitDbAdapter extends
public IngresUnitDbAdapter(DbAdapter adapter) {
super(adapter);
}
-
- @Override
- public boolean supportsFKConstraints() {
- return false;
- }
+//
+// @Override
+// public boolean supportsFKConstraints() {
+// return false;
+// }
@Override
public boolean supportsLobs() {