Author: reschke
Date: Wed Dec 11 16:47:34 2013
New Revision: 1550185
URL: http://svn.apache.org/r1550185
Log:
OAK-1266 - work in progress SQL/JDBC DocumentStore implementation - add support
for "limit"
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/sqlpersistence/SQLDocumentStore.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/sqlpersistence/SQLDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/sqlpersistence/SQLDocumentStore.java?rev=1550185&r1=1550184&r2=1550185&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/sqlpersistence/SQLDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/sqlpersistence/SQLDocumentStore.java
Wed Dec 11 16:47:34 2013
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.oak.plugins.sqlpersistence;
-import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
@@ -89,7 +88,7 @@ public class SQLDocumentStore implements
@Override
public <T extends Document> List<T> query(Collection<T> collection, String
fromKey, String toKey, int limit) {
- return query(collection, fromKey, toKey, null, 0, 0);
+ return query(collection, fromKey, toKey, null, 0, limit);
}
@Override
@@ -238,7 +237,7 @@ public class SQLDocumentStore implements
throw new RuntimeException("indexed property " + indexedProperty +
" not supported");
}
try {
- List<String> dbresult = dbQuery(connection, tableName, fromKey,
toKey, indexedProperty, startValue);
+ List<String> dbresult = dbQuery(connection, tableName, fromKey,
toKey, indexedProperty, startValue, limit);
for (String data : dbresult) {
T doc = fromString(collection, data);
doc.seal();
@@ -357,18 +356,25 @@ public class SQLDocumentStore implements
}
private List<String> dbQuery(Connection connection, String tableName,
String minId, String maxId, String indexedProperty,
- long startValue) throws SQLException {
+ long startValue, int limit) throws SQLException {
String t = "select DATA from " + tableName + " where ID > ? and ID <
?";
if (indexedProperty != null) {
t += " and MODIFIED >= ?";
}
+ if (limit != Integer.MAX_VALUE) {
+ t += " limit ?";
+ }
PreparedStatement stmt = connection.prepareStatement(t);
List<String> result = new ArrayList<String>();
try {
- stmt.setString(1, minId);
- stmt.setString(2, maxId);
+ int si = 1;
+ stmt.setString(si++, minId);
+ stmt.setString(si++, maxId);
if (indexedProperty != null) {
- stmt.setLong(3, startValue);
+ stmt.setLong(si++, startValue);
+ }
+ if (limit != Integer.MAX_VALUE) {
+ stmt.setInt(si++, limit);
}
ResultSet rs = stmt.executeQuery();
while (rs.next()) {